由于中国法律的原因,google ditu的 中文版独立于google map 英文版之外。成为了一个单独的系统。其发布的API 也是两套,在google ditu 里面,你无法看到中国大陆以外地区的详细地图。但在google map 里面对中国地区的信息只看得到城市的名字,最近好像在上海、北京等地区有了详细地图,但这远远不够。

由于公司的客户酒店遍布世界,怎样在google ditu 和google map 之间合理的切换是很重要的。

让google map 的模式加了一个CHINA 模式,默认调用google map api,在点击CHINA 模式时,切换到google ditu 状态。当然也可以用程序通过当前城市来自动判断。

以下是代码原型:

<html>
<head>
<script src="http://maps.google.com/maps?file=api&amp;v=2&amp;key="
type="text/javascript"></script>
<script type="text/javascript">
var map = null;
var dituMapType = null;
function load() {
    map = new GMap2(document.getElementById("map"));
    map.addControl(new GLargeMapControl());
    map.addControl(new GMapTypeControl());
    map.setCenter(new GLatLng(39.9208, 116.4001), 13); // 指定地图中心为北京市的
    // 经纬度
    var copyright = new GCopyright(1, new GLatLngBounds(new GLatLng(-90, -180),new GLatLng(90, 180)),0);
    var copyrightCollection = new GCopyrightCollection();
    copyrightCollection.addCopyright(copyright);
    var dituTileLayer = new GTileLayer(copyrightCollection, 1, 17);
    dituTileLayer.getTileUrl = function(tile, zoomlevel,x) {
        var url = G_NORMAL_MAP.getTileLayers()[0].getTileUrl(tile,zoomlevel,x);
        var bits = url.split("&");
        bits[1] = "http://servicetile.mapabc.com/googlechina/maptile?" + bits[1];
        /**bits[1] = "http://mapgoogle.mapabc.com/googlechina/maptile?" + bits[1];**/
        bits.shift();
        url = bits.join("&");
        return url;
    };

    //新建地图类型
    dituMapType = new GMapType([dituTileLayer],new GMercatorProjection(23), "Ditu", { shortName: "ditu", alt: "Show maps from Google China" });
    map.addMapType(dituMapType);
}
function changeType()
{
    map.setMapType(dituMapType);
}
</script>
</head>
<body onload="load()" onunload="GUnload()">
<div id="map" style="width: 600px; height: 400px"></div>
<input type="button" value="change" onclick="changeType()" />
</body>
</html>