2010-06-24 91 views
1

我目前设法将OpenStreetMap集成到Google地图API中,如this example中所述。我想知道我是否也可以将Bing地图磁贴整合到Google Maps API中。可能吗?我找不到任何关于此的信息。将Bing地图磁贴集成到Google Maps API中

注意:我知道mapstraction,但现在我想坚持使用Google Maps API。

在此先感谢。

+0

我不知道任何产品直接,但我的猜测是不是没有违反某人的许可。 – msw 2010-06-24 11:49:44

回答

7

根据您引用的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就是一个例子。

+1

适用于OpenLayers的+1 - 独立API,可访问Google,Bing,OSM和Yahoo数据 – geographika 2010-06-24 21:54:40

+4

支持OpenLayers的另一个关键点;通过OL *使用Bing/Google/OSM不违反任何API *;在GMaps中使用Bing的瓷砖。 – 2010-06-25 00:28:31

1
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 
}); 
+0

它不会从CDN中获得最大的利益(因为您只使用t1服务器,而平时使用的却是quadkey)。 而且像之前的评论中所述,由于违反使用条款,无法完成此操作。 – 2013-02-27 10:06:38

+0

是正确的,你可以像'ecn.t'+(Math.floor(Math.random()* 3)+1)+'。tiles'一样去做,只有当你拥有合适的许可证 – ryanmonk 2017-05-22 14:49:22