基于Google Maps的人员定位调度系统研究与实现
2011-07-09赵冬梅
张 艳,李 忠,赵冬梅
(1.重庆邮电大学移动通信重点实验室,重庆400065;2.北京首科软件及系统集成有限责任公司,北京100000)
0 引 言
随着信息技术的发展,电子地理信息领域已经成为了人们的一个研究热点,在一定程度上加快了地理信息技术的发展.而且,实际应用中对地理信息服务的各种新要求也不断驱动着基于WEB地图服务模式的地理信息技术的发展与完善,其信息传递模式的载体已经融合了计算机通信技术、网络技术、空间定位技术、计算机视觉技术等多个学科[1].众所周知,地理数据库是地理信息系统的核心,Google Maps正是通过其庞大的地理数据库为WEB GIS提供强有力的地理信息可视化及查询功能支持.然而,如何有效结合Google Maps与GSM/GPRS网络实现人员的准确定位和快速调度,以及如何提高Google地图的加载速度还存在着很多问题.
文章以 Google Maps的地图资源为基础,将Google地图嵌入到网页中,利用其免费的API,并应用AJAX技术进行脚本的异步调用.在此基础上,实现了基于Google Maps和GSM/GPRS网络的人员定位调度系统,该系统具有较强的工程应用价值.
1 Google Maps API
Google Maps是由著名的Google公司提供的电子地图服务,能提供矢量地图、卫星照片、地形图三种不同的视图模式.基于Web的地图服务技术随着Google Maps技术的出现在国内外得到了广泛的发展与应用,许多公司相继推出了相应的电子地图服务.Google公司发起的这场技术革命,将Google Maps API技术融入了互联网,使Google地图技术和其他系统的整合应用和二次开发更加简单.目前,Google Maps API被越来越多的网站和系统所应用,不仅提升了系统的易用性,而且还改善了用户体验.
1.1 Google Maps API的概念
Google Maps API是一种将Google地图嵌人到网页中的一组AP1,不仅提供能被 Ajax应用程序调用的JavaScript接口,还提供了能被Flash应用程序调用的Flex语言接口,而且具有强大地图处理能力.
1.2 Google Maps API的特点
Google Maps API的特点体现在[2]:①Google Maps对所有授权用户都是免费的,用户只要注册自己的ID后,就可以在自己开发的网页中嵌入这些Google Maps API函数.②提供精度较高的卫星影像数据.③使用很方便,并且提供多种服务,如天气信息等.④Google Maps能提供矢量地图、卫星照片、地形图三种不同的视图模式,而且可以方便地切换.⑤授权用户可以方便地在Google Maps API的基础上进行二次开发.⑥Google Maps API是一种基于服务器的应用开发模式,GIS数据处理主要集中在Google的服务器端.
1.3 常用Google Maps API介绍
Google Maps API提供的功能可以分成两类,一为地图显示功能,即用户可以调用API进行地图信息的显示及显示模式的切换;二为API的扩展功能,用户可以方面地利用Google Maps所提供的API进行二次开发,或者与自己的系统进行整合.下面介绍一些Google Maps API的常用对象.
(1)GMaps对象
GMap类的实例表示用户页面上的一个地图,用户可以在自己的程序中创建该类的多个实例,GMap类提供了许多地图操作的类方法;
(2)GControl控件
该控件是一种Google Maps API自带的控件类,开发人员可以利用GControl接口来调用合适的方法对控件的属性和行为进行设置;
(3)ControlPosition对象
该对象用于确定不同控件在地图上显示的位置,在地图上一种控件的位置相对于同一布局位置中的其他控件而定;
(4)MarkerShape对象
此对象用于确定标记可点击区域的的标记形状,包括两个属性(type属性和coord属性),这两个属性分别定义该类型的标记对应的默认类型的标记和坐标;
(5)Map Type对象
此对象提供了定义地图类型的接口,通过该接口用户可以调用不同类型的地图模式.
2 Google Maps API的应用
目前,谷歌一经推出了Google Maps API v3,不仅提高了地图的加载速度,尤其是手机浏览器的访问速度.而且在开发上,用户不再需要获取API的key,可以直接在网页代码中调用Google Maps API提供地图服务,或者进行二次开发.
2.1 网页调用
<script type=“text/javascript” src=“http://maps.google.com/maps/api/js?sensor=false&language=zh-CN”>
以上的javascript代码嵌入网页后,用于定位google地图服务器,其中sensor参数是必须的,如果开发的应用程序是通过传感器来确定用户位置的话,设置 sensor为true,否则为false.
<body onload=“initialize()” bgcolor=“#ffffff” ><div id=“map_canvas” style=“w idth:520px;height:380px;border:solid”></div></body>
以上代码是网页代码中的主程序,调用了initialize()方法,用一个宽度为520像素,高度为380像素的层对象在网页中显示地图信息.
2.2 Google Maps API开发应用
Google Maps API v3为当前最新版本,该版本中API应用程序的最基本元素都可以看作是"Map"本身,下面主要介绍一些API中与地图显示、比例尺、提示信息相关的应用方法.
(1)地图显示
在Google Maps API v3中,Map类主要用于地图的显示,可以在一个指定的html容器中新建地图.
map.getProjection();
以上代码用于传回当前的Projection,在地图还未启动时返回Null.
map.panTo(latLng:New LatLng);
以上代码可以将当前的地图中心更改为New-LatLng,在更改幅度不大于地图的宽度和高度时,地图滑动的效果会比较流畅.
map.New LatLng(latLngBounds:New-LatLngBounds);
以上代码可以将当前窗口中的地图滑动最小的距离,以达到包含指定New LatLngBounds的显示效果.
(2)地图标记
在Google Maps API v3中,Marker类用于在地图上显示具有指定选项的标记.
this.setMap(map:Map|StreetView Panorama);
以上代码可以再指定的地图上渲染标记,当地图设置为Null时,则会自动去掉该标记.
(3)提示信息
infowindow.open(map,MyMarker);
以上代码用于在地图上显示标记MyMarker.
3 人员定位调度系统的设计与实现
3.1 系统总体结构设计
系统主要由调度中心、人员定位终端设备及GSM/GPRS通信网络三部分组成[7],如图1所示.
图1 系统结构图
如上图所示,调度中心需要为服务器配置固定的IP地址,以实现无线分组网和因特网的互联.人员定位终端通过GPS接收机模块接收到GPS定位信息后,解析出自身的经度、维度、方向等信息;再通过人员定位终端设备中的GPRS无线通信模块把上述数据实时地上传到调度中心服务器,并将数据存入人员管理数据库中.调度中心服务器需要对所接收到的数据进行分析,并把人员定位信息与电子地图进行匹配,这样就可以在调度中心显示出所有人员的实时位置信息.同时,调度中心可以根据人员的具体情况,利用GPRS传输系统发送相应的调度、控制命令,从而实现对人员的实时定位与调度管理.
3.2 人员定位终端
人员定位终端通过接收GPS定位信号,实时计算出此时的经度、维度、时间等信息,并自动将这些定位信息传送到调度中心服务器,同时接受调度中心的调度命令,以实现对人员的调度.人员定位终端具有 GPRS/GPS功能,一般由微处理器模块、GPRS无线通信模块、GPS接收机模块、LCD液晶显示模块等组成[10].
GPS接收机模块主要负责接收导航电文,并实时计算出人员定位终端的经度、维度和时间等信息,并通过串口传送给终端的主控模块.
GPRS无线通信模块主要用于人员定位终端和调度中心之间的无线数据通信,该模块是整个系统数据通信的基础,不仅支持GPRS操作模式,还要提供RS232串行接口.
3.3 通信协议设计
在调度中心和人员定位终端之间主要传送两种格式的数据:一种是由GPS人员定位终端向调度中心发送的信息,即上行指令;另一种是调度中心向人员定位终端发送的数据,即下行指令[9].
在进行协议的设计时,最主要的问题是协议的通用性和可扩展性,通信协议不仅能实现对现有GPS人员定位终端功能的支持,还要预留足够的协议接口以保证系统的可扩展性.由于通信数据类型较多,通信协议可以采用统一的协议头作为协议数据的起止标志,在协议体中按照数据类型的不同可以发送不同的内容[10],协议设计基本格式如下表.
表1 协议总体设计格式
3.4 调度中心
调度中心主要由通信服务器、数据库服务器及调度工作站等组成.调度中心正常运行时,由通信服务器接收来自人员定位终端上传的经度、维度、时间等信息,并进行相应的数据处理,调度中心的软件系统调用Google maps API以实现在电子地图上显示人员的实时位置,并可根据需要进行查询.通信服务器还可以向所有人员定位终端传送各种调度数据信息,从而实现对人员的实时管理和高效调度.
而且,调度中心的通信服务器在系统中还具有数据转发的功能,可实时地将人员定位终端上传的大量数据信息,按照其属性和类型的不同,分别转发到不同的调度工作站.数据库服务器中存储人员的各类属性数据,以便查询、调用.
3.5 系统实现
图2 和图3是作者开发利用Google map API所开发的人员定位调度系统运行效果,其中图2是系统登陆页面,图3是系统综合管理页面.
如图3所示,无标签的浮动气球表示某突发事件的发生地点,调度中心需要调度人员到该地去处理;红色浮动气球表示不同的人员,气球上的编号为对应的人员编号;地图的左上角为缩放控件,左下角为搜索框,右上角为可供选择的地图类型,右下角为地图的缩略图.
当调度中心需要紧急调度相关人员去突发事件的发生地点时,可以根据人员的实时定位情况通过给定位中端发送调度指令,来调度距离该地最近的人员去处理紧急情况.如果多名人员到发生地点的距离相近时,调度中心可以通过多点测距来确定距离突发事件地点最近的人员及到达所需的时间,系统测距界面如图4所示.
图4 系统线路测距页面
系统的右上角表示两地之间的路线距离,另外调度中心在进行人员调度时需要考虑天气、交通等多方面的因素.
4 提高地图的加载速度
地图的加载速度是影响系统工作效率的一个重要因素,为了提高地图的加载速度,系统开发时采用Google map API V3版本.相对于V2版本,V3版本在地图的加载上做了很多的优化[6].
向Google地图添加大量标记时可能会降低显示地图的速度,还会使视觉效果过于混乱,对于某些缩放级别尤其如此.对此本系统使用标记管理器作为这一问题的解决方案,标记管理器允许在同一个地图上高效显示数百个标记,并能够指定应显示标记的缩放级别.管理器监控地图的当前视图和缩放级别,动态地从地图中添加或删除有效标记.此外,通过允许标记指定显示自身的缩放级别来实现标记集群,这种管理方法可以大大加快地图的显示并减少视觉混乱,提供给用户更为友好的界面和极大改善了用户的体验.
同时,Google的地图分块技术充分利用了数据在网络上异步传输技术的优势,由Ajax引擎实现大量地图区域的无缝拼接、地图滑动和快速填充等工作.当用户通过浏览器进行一些地图操作时,Ajax引擎自动计算出需要重新加载的地图区域,并以异步的方式迅速向Google Maps服务器发出加载请求.当重新加载的多个地图区域传送到客户端时,由Ajax引擎完成全部地图在用户浏览器界面中的无缝拼接,整个过程不需要用户的浏览器进行刷新.另一方面,如果浏览器的缓存中已经存在某一小块地图,下次浏览时则不用向服务器再次请求,可以直接调用缓存中的图片即可.这样当用户重新回到已被访问过的地图区域时,加载速度会有很大的改善.
5 结束语
本文通过介绍Google Maps API的功能、特点和使用方法,探讨了基于Google Maps API的Web地图服务应用系统的设计与开发,并将其应用于人员定位调度系统中.结果表明,利用Google Maps API(V3)实现的实时地图服务系统,不仅降低了系统的开发难度,还在很大程度上改善了用户体验,而且无需支付额外费用,具有良好的应用前景和推广价值.另外,Google Maps API现在还处于一个不断完善的阶段,其最大的不足之处系统核心的实时地图数据完全由Google提供,在实际应用开发时应考虑潜在的技术风险.
[1]耿庆斋,缪 纶,段媛媛,李江华.基于Google Maps API的Web地图服务系统研究及应用[J].中国水利水电科学研究院学报,2009,7(1).
[2]孙晓茹,赵 军.Google Maps API在WEBGIS中的应用[J].微计算机信息,2006,22(19):224-226.
[3]江 宽,龚小鹏.Google API开发详解[M].北京:电子工业出版社,2008.
[4]Google Maps API开发指南[EB/OL].http://www.google.com/apis/maps/2008-05-07.
[5]张 宏,温永宁,刘爱军,等.地理信息系统算法基础[M].科学出版社.2006.
[6]Sign Up for the Google Maps API[EB/OL].http://code.google.com/apis/maps/signup.html,2007.12.
[7]戴喜明,袁 涛,吴定雪.基于 GSM/GPS/GIS车辆状态监控系统的设计与实现[J].微计算机信息,2006,22(9):246-248.
[8]张 凌,田增山,张光星.基于ARM/GPRS/GPS的监控系统设计与实现[J].重庆邮电学院学报(自然科学版),2005,17(6):246-248.
[9]王明艳,刘 旭,张其善,吴今培.GPS车辆导航系统终端软件的设计与实现[J].无线电工程,2006,36(10):31-39.
[10]李富年.基于GPS/GPRS的车辆移动监控终端的设计与实现[J].安防科技,2007,7(9):33-36.