Google Maps API在WebGIS定位中的应用研究
2012-07-18丁毅,彭宏
丁 毅,彭 宏
(浙江省通信网应用技术研究重点实验室,浙江杭州310023)
0 引言
当前的信息社会,人们对地理信息的认知越来越广,对地理信息服务的新需求推动了网络地图服务模式的发展,地理信息服务已从早期以地图为载体的信息传递方式发展到建立在计算机技术、网络技术、空间技术、通讯技术以及地理信息技术等基础上的现代地理信息服务模式[1]。WebGIS(万维网地理信息系统)正是为适应这种模式而产生的一种新技术,用户只需一台连在Internet网上的电脑,就可以链入WebGIS站点,查询他所需要的地理信息数据[2]。借助于地理信息系统平台可进行WebGIS开发,当前开放的平台有很多,如Google Maps、百度地图、图吧地图、搜狗地图等。利用WebGIS与地图可开发一个对车辆或人员进行监控管理,也就是实现实时定位的系统。本文介绍了GIS以及Google Maps API并给出了WebGIS系统架构,最后给出了了Google Maps在网页客户端设备定位中的一种应用。
1 GIS以及Google Maps API介绍
地理信息系统(Geographic Information System,GIS)是以地理空间数据库为基础,在计算机软硬件的支持下,运用系统工程和信息科学的理论,科学管理和综合分析具有空间内涵的地理数据,以提供管理、决策等所需信息的技术系统。简单的说,GIS是一个基于数据库管理系统的分析和管理空间对象的信息系统[3]。
早期的GIS由于使用的是C/S结构,因此适用范围很小。对于GIS,如果要深入应用研究需要有两项必备支持,一个是数据,另一个是平台,两者缺一不可。如果要开发GIS需要花钱购买GIS公司的GIS平台产品并找地图供应商购买地图,费用开销很大。而如今,Google提供了免费的数据和平台,发布了相关数据接口API,它都是开源的,使用非常方便,需要的就是一些开发和集成。Google Maps二次开发就是在Google地图服务的基础上,使用Google Maps API和DOM,加载企业地理信息、增加用户交互、修正Google地理信息,以满足企业的需求。Google Maps API按其功能可分为两部分:一部分是显示地图功能,主要是Map类;一部分是API的扩展功能,比如地图控件,地图叠加层等,常用的类或函数是Marker类、InfoWindow类、Polyline类等。通过调用API,开发者可以将谷歌地图嵌入网站中,从而实现嵌入谷歌地图的地图服务应用,并借助地图数据为用户提供位置服务。同时它还允许开发者利用JavaScript脚本进行应用开发拓展,给地图添加标记和折线以及其他图层覆盖物或者响应用户点击操作,并显示气泡提示窗口。当然,最关键的是Google Maps API是一项免费的服务,任何非营利性网站均可使用。
2 WebGIS系统结构
实现WebGIS的方法有很多,包括 CGI方法、ActiveX方法、JavaApplet方法以及 ServerAPI方法等[4]。有了地图API,开发者就可以创建属于自己的应用程序。本文使用的Google Maps API工作原理图如图1所示:
图1 Google Maps API工作原理图
从图1中可以看出,整个工作过程是客户端(WEB浏览器)发送一个基于GIS的HTTP请求后,Web服务器首先收到并将其解析后发送给Google Maps服务器,这两个服务器协同响应客户端的请求,地图服务器将生成的地图文件返回并在浏览器上加载显示地图。
3 Google Maps在网页客户端设备定位中的应用
本文介绍的基于WebGIS的网页客户端系统具有设备定位功能,它可应用于车辆GPS定位或者移动终端设备的定位。本系统设备定位的实现方式是在网页上通过Ajax请求获取设备的GPS信息,后台接收请求后将设备位置显示在Google Maps上,并显示出设备相关信息。
3.1 设备定位功能的实现
整个设备定位的流程如图2所示:
图2 设备定位流程图
具体过程是:
(1)选择设备
登录网站后,在菜单栏中点击设备定位按钮,将在主页显示所有设备列表,点击你所要的设备名。此时网页完成加载谷歌地图的操作,默认将地图中心设置在杭州,并将你点击的设备的ID数据保存起来准备传递到下一张网页;
(2)选择设备定位查询
在选择了设备定位后,网页会重新加载地图,新的地图网页收到了上一张网页的消息数据,它是extjs通过ajax传递过来的devidx(设备id);
(3)后台查询定位信息
前台客户端网页将收到的设备ID通过AJAX请求发送到服务器,后台服务器在接收到Ajax信息后,通过url.py映射到views.py中的特定函数。接着函数接收request后读取设备ID参数,然后根据这个参数查询数据库,获得包括设备经纬度、设备位置在内的信息。查询经纬度信息相关代码如下。
这是django数据库查询语句,在DevGpsHistory表中查找devid等于dev_id的,并且gps星数大于等于一星的最新一条gps记录。获取的his_get是一个数组,这样就通过该车辆id在数据库中查找出了该设备最新的经纬度,定位时间,地理位置描述,视图(views.py)函数在解析完后,将这些信息打包成Json格式返回给前台客户端网页;
(4)WebGIS的交互
前台客户端网页在收到Json数据后,通过解析,利用Google Maps API将该点显示在地图上。通过解析Json数据,得到设备GPS信息和位置信息,将该坐标点标注在地图上,实现了定位功能。
3.2 效果演示
基于Google Maps的设备定位效果如图3所示,地图上的标记点即此设备的位置所在,它可以显示包括设备名、经纬度和位置信息。
图3 演示效果图
4 结束语
本文介绍了Google Maps API的使用方法并将其应用于基于Google Maps API的WebGIS设备定位系统。实践表明,基于Google Maps API开发的网页客户端设备定位系统具有较强的交互性和用户体验,且使用方便,无需额外费用,降低了使用门槛,具有一定的应用价值。
[1] 刘岳峰.地理信息服务概述[J].地理信息世界,2004,2(6):26-29.
[2] 陆守一.地理信息系统[M].北京:高等教育出版社,2004:18-19,232-233.
[3] 朱昕泽.GIS平台在校园数字化中的应用——Google Maps API的使用[J].文艺理论,2010,(7):159-185.
[4] 范圣策.GPS客户端的设计与实现[D].杭州:浙江工业大学,2011.
[5] 陈育春.Google Maps API开发大全[M].北京:机械工业出版社,2010:30-50,110-140.