代码之家  ›  专栏  ›  技术社区  ›  pars

将Bing地图平铺集成到Google地图API中

  •  1
  • pars  · 技术社区  · 16 年前

    我目前设法整合 OpenStreetMap 进入google maps api,如中所述 this example . 我想知道我是否也可以集成必应地图 瓷砖 进入谷歌地图API。有可能吗?我什么都找不到。

    注:我知道 mapstraction 但现在,我想坚持使用谷歌地图API。

    事先谢谢。

    2 回复  |  直到 13 年前
        1
  •  7
  •   atogle    16 年前

    根据您引用的openstreetmap示例,我认为 可能的 但这可能是一个相当大的挑战。我强烈建议不要这样做,因为OSM示例使用了GoogleAPI的版本2,现在它正式被否决了。

    但是,如果您想尝试一下,我将修改OSM示例以指向Bing图块,并确保 tileUrlTemplate 属性与Bing用于存储磁贴的格式匹配。不幸的是,必应使用 quad tree format 而谷歌使用 coordinate based format 用于存储磁贴并通过URL访问它们。如果您要使这个示例正常工作,那么理解这些差异是很重要的,因此一定要深入了解上面的文档链接。另外,Maptiler有一个 fantastic visualization 不同的瓷砖格式。我发现这是无价之宝。

    我个人会使用Openlayers。 由于Bing和Google都使用球面墨卡托,所以在一张地图上添加多个平铺源是一个很简单的操作。 Here 就是一个例子。

        2
  •  2
  •   ryanmonk    13 年前
    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
    });
    
    推荐文章