将Bing地图图块集成到Google Maps API中

时间:2010-06-24 11:46:16

标签: google-maps bing-maps openlayers openstreetmap

我目前设法将OpenStreetMap集成到Google Maps API中,如this example中所述。我想知道我是否也可以将Bing Maps tiles 集成到Google Maps API中。可能吗?我找不到任何相关的东西。

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

提前致谢。

2 个答案:

答案 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
});