2008年11月6日星期四

加载谷歌地图API的URL详细解读

    谷歌地图的API类库是通过script标签导入的,形式如下:   

    <script src="http://ditu.google.com/maps?file=api&hl=zh-CN&v=2&key=abcdefg" type="text/javascript"></script>



    我们使用API的时候关心的就是这个script的src属性了,这个属性也就两个部分:
路径:http://ditu.google.com/maps; 参数:file=api&hl=zh-CN&v=2&key=abcdefg

    解剖一下:

    1、 路径
http://ditu.google.com/maps

    路径在这里需要注意的就是它的域名:ditu.google.com。这个和谷歌地图简单背景里介绍的谷歌地图主页的问题类似,就是说,我们主要可以使用maps.google.com、ditu.google.com、ditu.google.cn这三个域名,有些区别和说明:

    1) 如果你需要在地图上显示大陆以外的详细地图,就非maps.google.com莫属了,不过,这个域名对国内地理数据的查询(比如查询地址、路线等等)支持能力有限,如果你这方面有需求就要小心了,而且,这个应该是使用的国外的服务器,所以,访问速度也需要注意;

    2)相反,如果你需要使用谷歌提供的与国内地理数据查询相关的API,就是用ditu.google.com吧,使用这个域名的缺点就在于它和 maps.google.com提供的类库不是完全一致,更新稍微有点滞后,而且,受限于国内数据源在法律等方面的限制,有些功能方面的支持也会受限,比如地址解析(现在已经放开了,这里只是拿来举例);

    3)至于ditu.google.com和ditu.google.cn的区别,我也很糊涂,如果你很想做个听话的好公民,不出一丝差错,那么.cn可能会比.com更让你放心一点吧,臆测,呵呵。

    总得来说,一般的应用使用ditu.google.com就可以了,如果需要使用大陆以外的详细地图,就考虑使用maps.google.com吧。不过,因为使用了相同的命名空间,这两者在一个页面中不能共存,所以,可以考虑用两个iframe来动态切换,这里有个火炬传递的例子,就是这么实现的,咱当初也贡献过一把。


    2、
参数:file=api&hl=zh-CN&v=2&key=abcdefg

    1) file=api 
         这个是请求API的JS文件用的,少不了,不需多说;

    2) hl=zh-CN 
         这个是在设定地图上除了地图图片以外的诸如控件名称、版权声明、使用提示等所需要显示文本的语言版本时候用的,如果没有指定这个参数就使用API的默认值,对ditu.google.com来说,默认是中文简体,maps.google.com默认的是英文。其他的语言版本在这里有一个简单的英文说明 (好像好久没更新了)。

    3) v=2 
         这个是用来指定需要导入的API类库的版本号,可以有四种设定方式:

        
v=2.s   稳定版本,更新最慢,但是最可靠
         v=2     当前版本(只用主版本号),更新速度和可靠性介于s和x之间;
         v=2.x   最新版本,更新最快,包括最新功能,可能没有当前版本可靠;
         v=2.76 指定版本。不建议使用。
         目前谷歌地图API的主版本号是2,这是从2006年4月开放的版本,对之前的第1版做了一些比较重要的升级,不过估计国内用第1版的应该很少,所以也没必要多说了,注意第二版里定义地图对象时使用GMap2而不是GMap就可以了,否则可能会导致一些奇怪的问题,我是见过这样的。
         多罗嗦两句,谷歌地图API正常情况下还是相当稳定的,不过也有一些比较著名的Bug,比如超长的Polyline在某些特定环境下可能会显示不正常。万一有什么问题可以去这里找找是不是别人报过的Bug(英文版),当然,更简单的办法是到谷歌地图API论坛里问问,不过别忘了把你的问题、运行环境描述清楚。我碰到过很多次这样的情况:对JavaScript或者浏览器端的某些技术特性不是很了解,出了一些奇怪的问题,撂一句话就走人,唉,就不评论了,“活到老学到老”还是很有道理的。
     4)key=abcdefg
         这个是设定你注册的API密钥,我在这里费了不少口舌,不是很了解的话可以看看。