基于开放地图API的WEBGIS应用研究
2015-01-20赵书田刘海姣
赵书田 刘海姣
摘要:WebGIS是利用成熟的Web技术、计算机技术、GIS技术基于互联网实现的一种新型地图服务方式。该文探讨了基于GoogleMapsAPI的WebGIS地图服务的应用研究,阐述了使用开放地图API构建WebGIS的优势,开发者可以轻松利用开发地图服务商所提供的各项地图资源及服务,非常方便高效地实现多种多样的在线电子地图应用。
关键词:WebGIS;地图API;百度地图;googleMapsAPI;AJAX
中图分类号:TP393 文献标识码:A 文章编号:1009-3044(2014)36-8686-03
近几年随着互联网络的信息化发展,GIS(地理信息系统)已经从单纯的技术研究逐步向地理信息服务层面转移,如导航需要催生了导航GIS的诞生,著名的搜索引擎Google也增加了Google Earth功能,GIS成为人们日常生活中的一部分。WebGIS是Internet技术与GIS技术相结合的产物,是在网络环境中的GIS应用。WEBGIS 的发展,扩展了GIS的应用,使得GIS 真正成为一种大众化的地理信息分析工具。从 Internet上的任何一个节点,用户可以浏览WEBGIS中的地图数据,并能用 WEBGIS提供的功能对这些数据进行空间查询分析、制作专题地图等,例如大家熟悉的google Maps 、百度地图、高德地图、MapABC等。
本文阐述的是利用在线地图服务商免费提供的开放地图API研究的GIS,创建小型地理信息服务系统,以WebGIS的形式发布更便利、更准确、更智能化的地理信息。
1 开放地图API的现状及前景:了解Web地图API相关技术及优势
Web地图服务是利用成熟的Web技术、计算机技术、GIS技术,基于互联网实现的一种新型地图服务方式。随着网络技术的开放,在互联网上已经有相当多的在线地图服务商提供了免费或收费的地图API程序接口,诸如Google Maps、百度地图、MapABC、Mapbar、Microsoft Virtual Earth Maps、Yahoo Maps、51地图等等。地图程序开发者使用这些开放的API进行二次开发制作第三方地图应用,通过这些地图API可以快速方便调用开发地图服务商提供的各种免费的地图资源,从而根据用户需要来实现各种各样的第三方地图应用。开放式地图API的诞生标志着互联网在线电子地图自由定制服务的兴起,对当前热门的基于位置的服务有了激进的作用,使得国内外很多大型服务型网站推出相应的地图服务应用,随着开发地图技术的发展基于这些在线地图服务的第三方应用也会越来越多。
基于开放地图API的WebGIS信息系统特点:
1) 稳定可靠的多层架构体系:基于开放地图API的WebGIS信息系统采用的是典型的B/S 构架,包括负责数据处理的数据层、负责逻辑流转控制的业务逻辑层以及负责前台界面显示的客户层架构,其中业务逻辑层根据逻辑分工又详细分解为Web页面程序控制层和地图资源服务层。通过这种多层架构体系使得系统开发结构逻辑层次非常分明、业务功能分工更加明确,进一步保证了这种多层次架构系统的运行效率。同时,在服务器端也更容易维护,客户端更简单操作,提高了系统的稳定性和可持续性。
2) 简单易用的空间数据库:WEBGIS地图显示采用地图资源服务商免费提供的地图服务,所请求的地图数据资源基本都来源自地图资源服务商,与传统的基于ARCIMS 的 WEBGIS 相比,基于开放地图API的WebGIS信息系统不需要设计组织多层的、复杂的空间数据库,WebGIS就是能充分利用现有互联网资源,将全局的、复杂的、工作量超大的地图数据处理交由服务商的服务器去执行,而相对数据量比较小的、基础的局部数据及简单操作则由客户端直接完成,这就大大降低了中小企业或开发者开发的成本。
3) 更多丰富的组件和接口:开放地图API一般都提供了很多丰富灵活的组建和接口,同时为了保持系统的可扩展性,为今后系统的扩展和更新作充分的准备,系统中设计和预留了程序应用接口。开发者为了进一步提高系统的运行的高效性,在开发过程中编写和灵活调用一些API内置的组件和接口,让它们直接独立地处理相关的逻辑业务。
4) 可定制的用户地图:与传统的基于ARCIMS 的 WEBGIS 客户端标准界面相比,目前互联网上最流行的Google地图和百度地图,在地图表现及用户体验上更容易受到用户的青睐。另外,电子地图的基本控制操作方面和业务服务功能方面,API都提供了丰富的应用接口,开发者可以按照方便快捷及人性化设计原理来定制用户界面,根据用户的业务和习惯的角度出发,开发用户真正需要的地图。
2 针对几款主流的开放地图API的初步调研:选择适合自己的地图API服务
针对互联网上几个主流的地图应用服务商:高德地图、百度地图Bmap、谷歌地图GoogleMaps、图吧地图MapBar、MapABC地图、51地图等地图应用服务商进行初步技术调研,这几款地图应用相对较多,比较成熟稳定,提供的接口应用不尽相同,开发文档也参差不齐,下面根据调研结果来做个大致的总结,是用户更加清楚的了解开放地图API。
百度地图API:基于百度地图服务的应用接口,提供基本地图展现、搜索、定位、逆/地理编码、路线规划、LBS云存储与检索等功能,包括Android SDK、车联网API、定位SDK、Web服务API、JavaScript API、iOS SDK、LBS云等多种开发工具与服务,适用于PC端、移动端、服务器等多种设备、多种操作系统下的地图应用开发。
Google Maps API: Google Maps API 是基于谷歌地图开发,开发者能够使用 JavaScript 结合HTML直接将谷歌地图直接嵌入HTML网页中。谷歌地图API提供了丰富的组件和接口应用用来处理地图资源,并通过各种接口应用向地图添加用户自定义内容,从而使用户能够在自己的网站上根据业务需要来创建业务丰富、功能强大的在线电子地图程序。谷歌地图API提供了多种地图模式,比如卫星地图、3D地图、交通地图等。另外,谷歌地图还支持常规的KML格式的地标文件。endprint
MapABC API:MapABC API提供了多种地图API和搜索API,用户可以根据自己的技术架构进行选择,创建各种地图应用。常用的MapABC Ajax JavaScript API能够在HTML中方便的构建JavaScript地图应用;搜索API是基于JavaScript的地图数据查询计算接口,所有搜索结果都可以展现在JavaScript地图上。
MapBar API:MapBar API提供了基本的地图显示接口外,还主要提供有偿API接口服务,一般专门为大中型网站、行业门户网站、大型商业网站以及各种企业级用户。
本次研究的基于开放地图API的WEBGIS应用是使用谷歌地图Google Maps 的地图资源,利用谷歌地图提供的GoogleMapsAPI接口程序将大家熟识的谷歌地图非常方便的嵌入到网页中,并结合AJAX异步请求功能,使得用户在不刷新客户端浏览器页面的情况下,向地图服务器请求关键数据并在后台更新到页面,这样大大减少了用户在浏览页面时的等待时间,提高了用户体验度。
Google Maps API是谷歌地图面向开发者推出的免费编程开放接口,是谷歌地图开发商推出的编程API,网站开发者使用谷歌地图API时只需使用JavaScript 脚本语言就可以轻松将谷歌地图服务嵌入到自己的HTML网页中,根据业务需要还可以自主地在定制的地图上制作出特殊标记或者打开指定的信息窗口。
下面针对常用的GoogleMapsAPI类模块做一下简单介绍:
GoogleMapsAPI在功能上分为六大类:核心类(Core Class)、基础类(Base Classes)、事件类(Event Classes)、控制类(Control Classes)、布局类(Overlay Classes)、服务类(Service Classes)。
1) GMaps对象。GMaps对象是GoogleMapsAPI中最重要的一个对象,用于实现创建和控制地图等最基本的功能,该对象包含的类方法相当丰富, 如设置地图中心及缩放级别、添加工具控件、添加标注点信息窗等。
2) GControl控件。GControl控件对地图进行操控的一组对象的总称,包括以下常用的8种基本控件:
缩放平移按钮控件GSmallMapControl()、
缩放平移按钮及滑块控件GLargeMapControl()、
缩放按钮控件GSmallZoomControl()、
地图比例尺控件Gscale Control()、
地图类型控件GMapTypeControl()、
下拉菜单式地图类型控件GmenuMap TypeControl()、
嵌套的地图类型控件GHierarchicalMapTypeControl()、
鹰眼控件GOverviewMapControl()
3) GMarker标注。使用GMarker标注可以在地图上指定的位置添加标注点对象,用于指示地理位置、显示信息窗口等。
4) GInfoWindow对象。针对地图的指定坐标点提供信息窗口的显示对象,使用GInfoWindow对象信息显示的内容除了可以使用简单的文本外,还支持使用HTML多媒体页面。
5) GPolyline和GPolygon对象。谷歌地图还提供了GPolyline折线对象和GPolygon多边形对象,他们分别是用于地图标记指定的路径和区域显示,这两个对象的类属性和类方法极为相似,主要应用与公交线路、驾车路线、区域搜索、行政区域等方向。
3 开放地图API的Web应用:结合实用Web技术构建AJAX地图网站
传统的WebGIS开发,需要完成一套完整的专用的地图类服务管理系统。传统的WebGIS开发开发难度很大、周期过长,一般情况下是需要一个技术相对比较强大的开发团队才能完成的,另外,也需要比较充足的硬件设备的支持。GoogleMaps API是谷歌公司提供的JavaScript类 API程序接口。网络前端开发员可以通过GoogleMaps API来调用这些程序接口将谷歌地图非常方便地嵌入到自己的网页,另外,开发者也可以根据用户需要进行快速的二次开发来定制专题地图,以此来创建操作简单、功能强大的谷歌地图应用程序。
AJAX即“Asynchronous Javascript And XML”(异步JavaScript和XML),是指一种创建交互式网页应用的网页开发技术。通过在后台与服务器进行少量数据交换,AJAX 可以使网页实现异步更新。这意味着可以在不重新加载整个网页的情况下,对网页的某部分进行更新。AJAX是一种技术组合或者是设计模式,它将几项目前已经成熟的Web应用程序开发技术巧妙组合,在客户端浏览器与Web服务器之间形成一个中间层,即AJAX引擎,使浏览器具备与Web服务器异步通信的能力。
在AJAX各项组合技术中,最为核心的是JavaScript和XMLHttpRequest。普通用户可以通过HTML前台页面中的表单控件、按钮、链接等操作与Web服务器应用程序进行交互,调用响应事件的JavaScript函数从而发起请求。 这里的请求并不是由客户端浏览器直接发送给Web服务器端,客户端仅仅是发起请求,发起请求之后客户端将请求控制权交给AJAX引擎处理。作为AJAX引擎的核心组成部分,JavaScript提供了用户交互的异步请求接口,一方面来响应客户端浏览器的事件,创建xMLHttpRequest对象,另一方面规定Web服务器应答数据处理函数,最后以GET方式或者POST方式向Web服务器发送请求,并传递相关参数。在AJAX向Web服务器发起请求的同时,客户端用户仍然可以通过Web应用程序前台浏览器界面进行查看、交互、操作,用户感觉不到Web 客户端端与Web服务器端的交互请求及请求响应的过程,不必等待Web页面的更新,从而提高实时性和交互性。endprint
目前已经有很多web应用开发者使用GoogleMapsAPI来扩展地图服务,极大地方便了人们的生活。然而,如果每次都调用GoogleMaps进行地图解析,势必会对客户端和服务器都造成极大的数据传输压力,效率并不高,而且Web应用可能会要求保存解析的结果。 Google MapsAPI开放版采用的是Ajax技术,与传统Web操作方式相比,Google Maps不再需要点击特定的链接来下载新的地图数据,用户的操作(如在地图上拖拽)随时触发浏览器与服务器之间的通信。另外浏览器和服务器之间的交互是异步进行的,当客户端在请求服务器数据的同时,用户的工作流程不再被频繁的刷新过程打断。Google MapsAPI提供的这些快速检索方式,就是通过AJAX引擎来完成向服务端请求数据,每次请求得到的反馈数据仅仅限于查询到的数据,不包含前台页面呈现的HTML等页面信息,这样情况下反馈数据中就不存在任何冗余和浪费,从而减少了用户交互时数据下载总量,提高了系统的响应效率。
以下示例是基于GoogleMapsAPI来构造地图的核心代码:
var map = new GMap2($("#map"));
var point= new GLatLng(34.8668002,113.6086397);
map.setCenter(point, 12);
其中, GMap2()是GoogleMapsAPI的一个构造函数,主要用来创建一个地图实例,并将该地图实例放置到地图容器$("#map")中,然后利用setCenter()类方法来初始化地图的中心点以及缩放级别,以此来实现地图显示区域的定位。
初始化完成后,一个基础的地图实例就完成了,如果要对地图进行一些基本控制,诸如缩放平移控制、切换卫星地图/平面地图/3D地图类型、鹰眼缩略图模式、查看地图比例尺等,API提供了addControl()方法可以根据需要在地图上添加相应的工具控件,譬如常用的平移缩放控件、比例尺控件、鹰眼控件、地图类型控件等,如下所示:
map.addControl(new GMapTypeControl());//卫星地图切换
map.addControl(new GLargeMapControl());//移动、缩放地图工具控件
map.addControl(new GScaleControl());//比例尺
map.enableDoubleClickZoom();//双击缩放地图
map.enableScrollWheelZoom();//鼠标滚轴缩放地图
另外,用户还可以根据业务需要结合AJAX进一步配置更具动态交互性更强的地图,如向地图添加覆盖物、信息点、路径规划、测量距离、计算面积等对象。Overlay是GoogleMaps一些覆盖物对象,使用addOverlay()方法可以将它们显示在地图上的指定地理位置,同时程序接口还提供用户与其进行交互的功能。使用Overlay的一个典型应用就是把一个标注点、路径、多边形覆盖物等标记放在指定的位置以指示一些特殊位置或地理区域。下面的代码是向地图上添加一个信息点标注:
//创建一个坐标点
var point = new GLatLng(34.8668002,113.6086397);
//根据坐标点创建一个标注
marker=new GMarker(point);
//在地图实例中添加这个标注
map.addOverlay(marker);
4 总结
本次研究室通过系统介绍GoogleMapsAPI的基本功能、技术优势和类使用方法,并认真探讨了这种基于谷歌地图API的WebGIS在线地图服务的应用研究。经调查研究并通过实践表明,基于开发地图API二次开发的Web在线地图服务应用系统,从用户体验角度来说确实增强了客户端用户交互性,同时丰富了客户端互动功能,进一步提升了用户使用web地图服务的体验度。GoogleMapsAPI应用于Web地图服务中,可明显地提高客户端的浏览效果,使电子地图应用的开放更为广泛地被非专业技术用户所接受,对电子地图服务的发展和应用推广具有重要的应用价值
参考文献:
[1] 花杰.基于GoogleMapsAPI的WEBGIS应用研究[J].中国高新技术企业,2010(25).
[2] 赵俊三,赵耀龙.GIS发展的最新趋势及其应用前景[J].测绘工程,2000(2).
[3] 王志红,胡川.基于GoogleMapsAPI的网络地图服务系统的研究与应用[J].测绘标准化,2010(26).
[4] 陈圆,简季,杨武年.GoogleMaps组件二次开发与应用[J].地球信息科学,2008(10).
[5] 王卫玲,刘瑜.基于GoogleMapsAPI的电子地图的开发研究[J].信息技术与信息化,2011(3).endprint