Интеграция плиток Bing Maps в Google Maps API
-
29-09-2019 - |
Вопрос
В настоящее время мне удалось интегрировать OpenStreetMap в Google Maps API, как это описано в этот пример. Отказ Интересно, могу ли я также интегрировать карты Bing плитка в Google Maps API. Является ли это возможным? Я ничего не мог найти в этом.
Примечание: я знаю о картстракция Но сейчас я хотел бы придерживаться API Google Maps API.
Заранее спасибо.
Решение
Исходя из примера OpenStreetMap, который вы указали, я бы сказал, что это возможно Но это может быть довольно сложной задачей. Я настоятельно рекомендовал бы против этого, так как в примере OSM используется версия 2 Google API, и теперь он официально устарел.
Но если вы хотите попробовать, я бы адаптировал пример OSM, чтобы указать на плитку Bing и убедиться, что tileUrlTemplate
Собственность соответствует формату Бинга для хранения плиток. К сожалению, Bing использует Формат Quad Tree Пока Google использует координатный формат для хранения плиток и доступа к ним через URL. Будет важно понимать различия, если вы собираетесь заставить пример работать, поэтому обязательно копаться в ссылках на документацию выше. Кроме того, у Maptiler есть Фантастическая визуализация из разных форматов плитки там. Я нашел это бесценным.
Лично я бы использовал OpenLayers. Поскольку Bing и Google оба используют сферический Mercator, добавление нескольких источников плитки к одной карте является тривиальным упражнением. Здесь это пример.
Другие советы
function TileToQuadKey ( x, y, zoom){
var quad = "";
for (var i = zoom; i > 0; i--) {
var mask = 1 << (i - 1);
var cell = 0;
if ((x & mask) != 0) cell++;
if ((y & mask) != 0) cell += 2;
quad += cell;
}
return quad;
}
var bingMapType = new google.maps.ImageMapType({
name: "Bing",
getTileUrl: function(coord, zoom) {
// this returns aerial photography
return "http://ecn.t1.tiles.virtualearth.net/tiles/a" +
TileToQuadKey(coord.x, coord.y, zoom) + ".jpeg?g=1173&n=z";
// i dont know what g=1173 means
},
tileSize: new google.maps.Size(256, 256),
maxZoom: 21
});