Archive for the ‘Google Maps / Ditu’ Category

Google Maps + 谷歌地图的mashup

Sunday, July 22nd, 2007

转到 Google 地图 主页Go to Google Maps Home

前些天弄了个bookmarklet来切换google map和地图,但觉得还是有些不方便,今天抽空用GoogleMaps API添加了个Ditu layer. 呵呵,这样可以很爽的切换和拖来拖去了。:)

其实这东西没几行代码,写的时候还很感慨google maps API的设计者的确功力非凡把很多应用的可能性都已经考虑在内,所以来mash这个ditu才如此方便。 本来我以为要分析图片的规律,后来方向根本没这个必要:

    var copyright = new GCopyrightCollection(”");
    var dituTileLayer = new GTileLayer(copyright, 1, 17);

    dituTileLayer.getTileUrl = function(tile, zoomlevel) {
        return http://mapgoogle.mapabc.com/googlechina/maptile?v=w2.56&x= + tile.x + “&y=” + tile.y + “&zoom=” + (17-zoomlevel);
    };

ditu和maps的zoom level是反的,不果幸亏已经看到别人的讨论所以没有为此浪费时间。

下面是效果:

 

源代码在这里,自己view source(没几行代码…)

Google Map和谷歌地图的切换小工具(转自我的中文blog)

Sunday, July 22nd, 2007

转到 Google 地图 主页Go to Google Maps Home

大家可能知道,Google Map和谷歌地图目前在API等方面已经完全一致了,月光有篇文章介绍了:

从交通地图可以成功切换到卫星地图,在ditu.google.com上找到一个地点后,将地址栏地址中的ditu更换为 maps,打开这个地址,再点 “Satellite(卫星)”按钮,就可以看到这个地点的卫星地图了。由于中国法律上的限制,目前Google还不能直接将这两个系统做到一个界面上。但是从实际应用效果上看,ditu.google.com的数据以及操作方式甚至API都已经和maps.google.com完全一致了

这样两个站点对照很好玩,但手工改来改去太累了,所以实现了个小书签栏的工具,可以帮助你在Google Maps和谷歌地图之间随意切换,比修改地址栏要方便许多。

地图/Maps切换

用法:把上面的链接用鼠标拖拽到firefox的书签工具条上,浏览到google maps或者地图的时候,点击书签工具条上的“地图/Maps切换”,就自动切换到另外一个站点,保持当时的地点。 

只是编来玩和自用的,没有测试在Firefox以外的浏览器上是否正确。需要了解更多的在这里(英文的)

通过谷歌ditu查找中国地标经纬度信息

Sunday, July 22nd, 2007

看到jeruliu在他的blog继续 Google Map中谈到了如何通过ditu来获得经纬度信息的方法:

近期一个重要任务是要实现地址查询的定位,也就是经纬度和地址的翻译,很明显,中国地图版本没有提供接口,不像英文版用 GClientGeocoder 可以简单实现,在官方网站找了一段让人失望的话:”但是,到目前为止,中文 Google 地图 API 的地理译码器尚不支持地理译码。不过,您可以根据我们提供的规范开发自己的地理译码器,或者使用第三方提供的地理译码器”。只有自己用比较复杂的方法来 hack 一下了。

打开中国版 google 地图,查看源码,找到这一行:
<input type=”submit”id=”q_sub”name=”btnG”tabindex=”2″class=”btn”value=”搜索地图”/>

得知其调用了一个onSearch(this)的函数,可惜里面的代码真不是给人看的,*&(**&^

然后开始查看查询后的页面属性,简化后可以得到查询的url, 比如深圳,q就是地名参数变量

http://ditu.google.com/maps?f=q&hl=zh-CN&geocode=&q=%C9%EE%DB%DA

寻找程序入口为loadApplication,gApplication大概就是地图变量,同时搜索深圳,发现以下关键内容:url: “/maps?f=q\u0026hl=zh-CN\u0026geocode=\u0026q=%E6%B7%B1%E5%9C%B3\u0026ie= UTF8″,urlViewport:false,ei:”hnOXRu-aBomIjQOsspnZCQ”,form:{selected:”q”,q: {q:”深圳”},l:{q:”",near:”深圳”},d:{saddr:”",daddr:”深圳”},geocode:”"},query: {type:”g”},stickyFlags:{hl:”zh-CN”},viewport:{center:{lat:0,lng:0},span:{lat: 0,lng:0},mapType:”"},resolvedPOIID:false,mabcCenter:{id:”BE00000593″,title: “广东省深圳市”,gridcode:”3314605401″,bottomLeftId:”BF00000B26″,topRightId: “BF00000B27″,zoom:”9″},modules:[""],overlays:{sxcar:false,markers:[{id:”addr”,mapabcPoiid:”BE00000593″,

这个id:”BE00000593″估计就是系统内部的地理编码id, 因为mabcCenter一定是根据坐标来定位中心的。

再次查找资料,知道mapabc的接口是http://mapgoogle.mapabc.com/mapabcpoi

那么拿刚才的mapabcPoiid来作为参数:?pco=a;BE00000593

查询后果然得到了一个页面,上面有一串base64加密后的文字: notpcoStrbase64 = MTE0LjA1NTU3MjksMjIuNTQyMTQ4OTg=

那么对这串文字进行解码, 还原后得到了加密前的文字: 114.0555729,22.54214898

那么这个就应该是深圳的坐标位置了,进行了一下验证,完全正确!!!

但是经纬度和英文版是相反的,还有zoom level也是相反的,需要用17去减!

我想他可能是用server side的逻辑去处理来获得地标的经纬度, 如果只是在浏览器中试图去寻找位置并切换,直接用我的那个ditu/map切换脚本可以做到, 看来ditu中已经把那些转换给做了。

Google Map和谷歌地图目前在API等方面已经完全一致了,月光有篇文章介绍。

这样两个站点对照很好玩,但手工改来改去太累了,所以实现了个小书签栏的工具,可以帮助你在Google Maps和谷歌地图之间随意切换,比修改地址栏要方便许多。

地图/Maps切换

用法:把上面的链接用鼠标拖拽到firefox的书签工具条上,浏览到google maps或者地图的时候,点击书签工具条上的“地图/Maps切换”,就自动切换到另外一个站点,保持当时的地点。 

只是编来玩和自用的,没有测试在Firefox以外的浏览器上是否正确。需要了解更多的在这里(英文的)。

Close
E-mail It