
由于中国法律的原因,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&v=2&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>