我目前设法将OpenStreetMap集成到Google Maps API中,如this example中所述。我想知道我是否也可以将Bing Maps tiles 集成到Google Maps API中。可能吗?我找不到任何相关的东西。
注意:我确实知道mapstraction但是现在,我想坚持使用Google Maps API。
提前致谢。
答案 0 :(得分:7)
根据您引用的OpenStreetMap示例,我会说它可能但它可能是一个相当大的挑战。我强烈建议不要使用它,因为OSM示例使用的是Google API的第2版,现在它已被正式弃用。
但是如果你想尝试一下,我会调整OSM示例以指向Bing图块并确保tileUrlTemplate
属性与Bing的格式匹配以存储图块。很遗憾,Bing使用quad tree format,而Google使用coordinate based format存储切片并通过网址访问它们。如果您要使示例工作,那么理解差异将非常重要,因此请务必深入了解上面的文档链接。此外,MapTiler还有fantastic visualization个不同的磁贴格式。我发现这非常宝贵。
就个人而言,我会使用OpenLayers。由于Bing和Google都使用球形墨卡托,因此在单个地图中添加多个磁贴源是一项微不足道的练习。 Here就是一个例子。
答案 1 :(得分:2)
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
});