Google Maps带来的轰动效应背后,少不了基于客户端浏览器的图片缓存技术的支持,我认为这是一种技术革新——因为任何常见的WebGIS商业产品都没有此种地图展现方式。
Go2map其 实也很早就运用了该技术(去年推出新版本的VIP地图服务时),不过该地图服务仍然是基于MapInfo产品线的,不是很漂亮和高质量(起码跟 Google比起来,道路少了灰色的border),而且界面稍显复杂(个人感觉)。使用客户端图片缓存后,很好的缓解了中心地图服务器的压力,要知道以 前在Go2Map上查询北京的公交老是等待超时。
仔细分析一下Google Maps的内部机制(从界面上的操作体验中也可推断),此种WebGIS系统真的与以前的ArcIMS、MapXtreme等二次开发出来的系统有着本质的不同:
Go2map其 实也很早就运用了该技术(去年推出新版本的VIP地图服务时),不过该地图服务仍然是基于MapInfo产品线的,不是很漂亮和高质量(起码跟 Google比起来,道路少了灰色的border),而且界面稍显复杂(个人感觉)。使用客户端图片缓存后,很好的缓解了中心地图服务器的压力,要知道以 前在Go2Map上查询北京的公交老是等待超时。
仔细分析一下Google Maps的内部机制(从界面上的操作体验中也可推断),此种WebGIS系统真的与以前的ArcIMS、MapXtreme等二次开发出来的系统有着本质的不同:
- 地图预先生成,这一点是首当其冲的,说了很多次了。
- 地图切片,客户端同时下载。当地图窗口发生移动、缩放时,便需要下载新的图片来填充新的区域,在这里充分利用了浏览器(如IE)的多线程同时下载的功能,另外,下载过的图片无需再次访问服务器下载。缺点就是客户端编写需要大量脚本来支持。
- 由于服务器不是实时地根据矢量数据生成地图图片,就造成了地图数据无法及时更新。但若仔细察 看,不难发现Google Maps上的数据其实大部分是道路交通、行政边界,其他的POI(Point Of Interests)信息并不是固化在地图上的,如此便使人觉得地图稍显单调,好在高质量的卫片影像弥补了此不足。Google通过客户端脚本技术,把用 户的搜索结果(也就是各种POI数据)以“大头针”图片的形式展现在客户端浏览器上,比如有名的官方Pizza店示例。反过来一想,还真得佩服 Google的设计:POI数据是经常更新的,而基础数据(Framework dataset,比如高级别的道路、桥梁、城市、湖泊等)则是很少变动的,即便是某些小道路发生变化,也可以很方便的生成该范围的地图斑块,这个工作量是 较小的。
- 上面提到了POI数据,其实它是动态生成的(当然,也可以是静态的),这个怎么说呢?好比 Google的网络爬虫找到了某个公司的门户网站,分析出了该页面的内容结构并找到了其联系方式:##,**Road,**City,通过 Geocoding技术便可在地图上找到其位置。
- 由于地图图片的预生成,以前的WebGIS站点经常提供的“图层控制”功能便无法达到,其实,这个并不影响用户的使用体验——Google地图是如此的清晰明了,用那玩意儿干啥?
- 抛弃“鹰眼”窗口,也就是那个缩略图,可能有人觉得用起来不太习惯——因为你不知道目前浏览到具体哪个位置了。但是,想想看:全世界的地图,当你放到到很细节的地方时,鹰眼上的显示框会多么的小啊,丝毫没有意义。
- 在地图上弹出Info Window以显示详细信息,底层实现使用了XML和XSLT,的确在界面上和视觉上给人以冲击,而且这也的确是一个好主意——既很好的节约了页面空间,又方便了用户操作。
- “图中图”。该功能可谓煞费苦心,看看人家就是做得细致,在弹出的Info window中还有一个小地图来显示周围的情况,还可以在小地图上进行缩放,有点儿类似放置了一个放大镜在那里,真够绝的。
- 疯狂的运用Javascript脚本,恰好现在的Web设计又回归Javascript,特 别是自AJAX的流行以来,似乎有唤醒了大家对浏览器端的脚本的重视。Google Maps的脚本可不是一段两段,而是超过了万行,就拿它在客户端显示路径这个功能来说,就必须牵涉到XML解析、路径数据的转码(Google在传输路径 的位置坐标时作了编码处理)、VML渲染、如果非IE则需要访问服务器以便让服务器程序画出路径并回传图片……如此林林总总,不一而足。
- Google在中国的本地搜索服务也推出了Beta公众试用版了,而且北京地区的图也很详细,我想最大的困难也许就是国内的地名解析吧,要知道国内的门牌号、街区号、邮政编码都不是划分的很清晰,这个属于城市规划建设的问题了~
GIS发展至今,经历了System-Science-Service几个阶段的蜕变,而且这 三个过程的界线愈发明晰,象现在,就有人在做System,有人在做Science,有人在做Service,其实归根到底,它仍然是一种IT技术,个人 认为无论搞科研,还是搞软件开发,又或者你是搞服务圈钱,都与计算机和网络是分不开的,不结合计算机技术,是搞不出任何新花样出来的~