google离线地图

阅读更多

在web开发中可能遇到这样的需求:需要一个地图系统,选择google map来完成地图的展示,但是该web系统由于特殊性而不允许与外网链接,还有就是现在对google的访问越来越不稳定(国家网络限制),因此希望将google map移植到内网中使用。
可以将google map api分为3个部分来看待:
1、负责与服务器交互的js文件
2、google提供的技术支持,例如查找路径、周边搜索
3、google提供的地图数据

如果需要开发的功能中包含第2部分的需求,那么可能比较复杂。因为路径算法在google服务器上实现,只是对外提供了接口,如果无法连接google网络则无法实现。
但如果开发的web中对map的使用比较简单,例如只是加载地图,有简单的地图移动等功能,那么这样的需求是可以将google map移植到内网来处理的。这种方法也适用于自定义周边搜索,例如需要完成的web功能就是通过查询,获取指定范围内的建筑物、获取自定的标记(开发本地商户搜索系统的时候,地图上商户数据的维护肯定是有web自己维护,而并非google提供的数据,这种场景正好适合)。

下来来说如何将google map本地化,可以分为两个步骤:
1、将google map使用的与服务器交互的js文件本地化
这个当然是根据google map加载时候,所需要的js下载到本地,以后再应用程序开发的时候,不引用google站点上的js,而是换成本地的js文件。具体有些什么js需要下载的,这里就不做详细介绍了,可以通过firefox的firebug插件,或是google chrome等工具查看到http请求,分析并下载有效的js文件,可能还需要分析各个js之间在使用过程中加载外链js的地址,并予以修改、替换问对本地js的调用。google map api中需要使用到的js本地化,网络上一个叫做rover.tang的朋友已经做得很好,提供了google map api v3.8的本地化js,可以在网络上找到。
2、将google map的地图数据(tiles:瓦片)下载到本地,以及应用的开发
说到地图数据,需要了解google map的一点基础知识。google把在浏览器中显示的地图,分割成一块一块的图片,称之为tile,在浏览其中显示地图的部分,从google下载各个tile,然后拼接在一起,就能够看到完整的一幅地图。每一个tile的大小都是256*256的png图片,因为存在缩放(缩放级别为0-19),每个缩放级别中,浏览器中显示地图的区域被划分为多个tile,每个tile会根据去google站点下载对应的地图数据,其实就是一张png图片,在浏览器分别请求以获取tile地图图片数据的时候,会传递给google 三个重要的参数,1、tile的x坐标;2、tile的y坐标;3、当前浏览器中显示的地图的缩放级别。
google map可以自定义地图类型(MapType),详细的可以参考https://developers.google.com/maps/documentation/javascript/maptypes
下面说说如何通过自定义方式加载地图(地图数据本地化)

 

 

来源:http://www.iteye.com/topic/1122688

  • googleMap离线.zip (710.1 KB)
  • 下载次数: 441

你可能感兴趣的:(地图)