我目前设法将OpenStreetMap集成到Google地图API中,如this example中所述。我想知道我是否也可以将Bing地图磁贴整合到Google Maps API中。可能吗?我找不到任何关于此的信息。将Bing地图磁贴集成到Google Maps API中
注意:我知道mapstraction,但现在我想坚持使用Google Maps API。
在此先感谢。
我目前设法将OpenStreetMap集成到Google地图API中,如this example中所述。我想知道我是否也可以将Bing地图磁贴整合到Google Maps API中。可能吗?我找不到任何关于此的信息。将Bing地图磁贴集成到Google Maps API中
注意:我知道mapstraction,但现在我想坚持使用Google Maps API。
在此先感谢。
根据您引用的OpenStreetMap示例,我会说它是可能但它可能是一个相当大的挑战。我强烈建议不要这样做,因为OSM示例使用Google API的第2版,现在它已正式弃用。
但是,如果您想尝试一下,我会调整OSM示例以指向Bing图块,并确保tileUrlTemplate
属性与Bing的格式匹配以存储图块。不幸的是,Bing使用quad tree format,而Google使用coordinate based format来存储切片并通过URL访问它们。如果你要让这个例子工作,那么了解它们之间的差异是很重要的,所以一定要深入上面的文档链接。此外,MapTiler还有一个fantastic visualization的不同瓷砖格式。我发现这是非常宝贵的。
就我个人而言,我会使用OpenLayers。由于Bing和Google都使用球形墨卡托投影机,因此将多个拼贴源添加到单个地图是一项简单的练习。 Here就是一个例子。
适用于OpenLayers的+1 - 独立API,可访问Google,Bing,OSM和Yahoo数据 – geographika 2010-06-24 21:54:40
支持OpenLayers的另一个关键点;通过OL *使用Bing/Google/OSM不违反任何API *;在GMaps中使用Bing的瓷砖。 – 2010-06-25 00:28:31
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
});
它不会从CDN中获得最大的利益(因为您只使用t1服务器,而平时使用的却是quadkey)。 而且像之前的评论中所述,由于违反使用条款,无法完成此操作。 – 2013-02-27 10:06:38
是正确的,你可以像'ecn.t'+(Math.floor(Math.random()* 3)+1)+'。tiles'一样去做,只有当你拥有合适的许可证 – ryanmonk 2017-05-22 14:49:22
我不知道任何产品直接,但我的猜测是不是没有违反某人的许可。 – msw 2010-06-24 11:49:44