如何在Google Maps API中使用谷歌地图的数据?
这几乎是我听到的最多的关于Google Maps API的问题了。大家都知道Google Maps没有中国的详细地图,在中国,我们只有一个独特的谷歌地图网站,提供了中国的详细地图。这种现状的原因,Google和谷歌都没有正式解释过,但是我们自己多半也能猜到大概,这我们就不多说了。
问 题是,我们有了中国的详细地图,我们怎么在Google Maps API中使用呢?之前我总是这么回答大家,谷歌地图提供了兼容Google Maps API语法的API,唯一的问题就是不太稳定。这个方法其实并不好,因为你需要在代码中去考虑怎么在两个不同的对象之间切换,代码逻辑会变得非常的复杂。
但是因为谷歌地图现在的缩放级别和切图模式已经完全等同于Google Maps了。所以其实,我们有一个非常好的办法,那就是直接利用谷歌地图的地图块构建一个Google Maps API的自定义地图类型。
下面是来自Anthony Wong的在Google Maps API中使用谷歌地图的例子(地图类型出现了四个选择,第四个DITU就是选择谷歌地图的按钮):
核心代码是:
var copyright = new GCopyright(1, new GLatLngBounds(new GLatLng(-90, -180),
new GLatLng(90, 180)),
0, "Map data: В©2007 Mapabc.com");
var copyrightCollection = new GCopyrightCollection("В©2007 Google - ");
copyrightCollection.addCopyright(copyright);
var dituTileLayer = new GTileLayer(copyrightCollection, 1, 17);
dituTileLayer.getTileUrl = function(tile, zoom) {
return "http://mapgoogle.mapabc.com/googlechina/maptile?v=w2.52&x=" +
tile.x + "&y=" + tile.y + "&zoom=" + (17-zoom);
};
// Using a map type:
var dituMapType = new GMapType([dituTileLayer],
new GMercatorProjection(23), "Ditu", { shortName: "ditu", alt: "Show maps from Google China" });
map.addMapType(dituMapType);