基于百度地图API的主动定位研究与实现

2021-07-12 00:30江永池
韩山师范学院学报 2021年3期
关键词:代码导游百度

江永池

(汕头职业技术学院 计算机系,广东 汕头 515078)

在日常生活中,经常要通过电子地图系统来确定相关人员的位置,或者一组相关人员、移动设施(如车辆)需要相互定位[1],目前的做法是主寻方通过电话或微信通知被寻方,被寻方将自己的位置反馈给主寻方,这种一问一答式定位方式是被动寻呼定位模式.如图1 是被动寻呼定位模式的执行过程.采用被动寻呼定位方式,在实际应用中会存在以下几方面问题:(1)主观上,因被寻方故意瞒报,无法获得被寻方定位;(2)客观上,被寻方因环境噪杂,无法接收主寻信息,不能及时反馈定位;(3)双方通信正常,但一问一答式响应存在实时性差的问题;(4)不能同时获得一组被寻对象的定位.

图1 被动寻呼定位模式

由于被动寻呼定位存在上述缺陷,在人们的生活和工作中,会造成诸如园区安保巡更、大型活动人员调控、旅游景区导游、游客、旅游车相互定位不能及时到位,管理效率低下等问题[2].基于实际应用需要,我们经过研究论证,提出基于百度地图的主动定位解决方案,并根据该方案构建一个主动定位web应用平台,让定位不再需要寻呼,同平台上各用户能快速确定一个或多个其他用户的位置信息.

1 解决思路和实现办法

1.1 基本解决思路

基于上述问题,经过探索和实践,参考国内有关Html5移动定位与百度地图API研究[3-4],改进了主动定位模式,不再认定主寻和被寻方,一个群组多个对象(以下称组员)同时登录到平台上,输入约定的代码(或手机码,系统不主动读取用户手机码),系统定时记录组员的GPS 位置,再转换为百度坐标,利用百度地图显示各自位置[5].以旅游管理为例,导游可以实时获知一个或多个游客位置,游客也可实时获知导游和旅游车位置,打破一问一答的局限,实现实时多方主动相互定位.其中图2为主动定位平台网络结构图,图3为其功能结构图.

图2 主动定位平台网络结构图

图3 主动定位平台功能结构图

主动定位系统的优点:(1)定位无主从关系,实现多对多定位;(2)减少寻呼过程,无需等待应答,定位实时不滞后;(3)可以要求被定位者拍摄周围环境,确认被定位者的真实位置;(4)可以给被定位者留言,保证多种联络路径畅通.

1.2 主动定位平台框架和实现功能

主动定位平台实现以下主要功能.

(1)主页:用户登录后,输入约定的代码,如某个旅游团,该团主代码为200320A,序码为XXX三位数,每位游客分配一个序码.系统自动检测出该用户的GPS坐标,转换为Baidu的坐标,并在百度地图显示出来.同时,如该用户有未读信息,会显示其他用户的信息列表.显示用户当前位置.

(2)找人:找人页面可以寻找某个代码或一组代码的定位,并在百度地图标示出来,当勾上提醒选项时,被寻对象会响起音乐提示音.如果被寻对象有对周围环境的拍照,可以被查看,验证被寻对象的确切位置(见图4).

(3)拍照:利用手机的拍照功能,可以拍摄并上传周围环境照片.

(4)留言:如定位不到要寻对象,可以给被寻对象留言,被寻对象上线时,会看到留言信息.

(5)后台模块:页面功能相对简单,主要定期删除上线用户记录,删除留言信息.

以下模拟某旅游团的一次活动,一年一度的菊花展在某市中山公园举行,旅行团有半日的游园安排.下午1:00,各团友自中山公园东侧门入园,自由活动.本团代码为133X,1331为导游,2,3,4 为团友.导游在2:25 的位置,位于园内月鉴湖西北处,如图4 我的位置.导游查看团友1332 位置,勾上提醒,点击查找,查得1332位于园内入公园牌坊处,并查看到该团友拍摄的实景图,如图5、图6.这时团友1332手机提醒音乐响起.导游又输入133*,查得1332,1333,1334号团友的实时位置,如图7.这种体验,让导游对团友定位了如指掌,在该次带团活动中获得良好体验.

图4 我的位置

图5 定位1332团友

图6 查看被寻实景

图7 多被寻对象定位图

主动定位平台也可以应用在很多生活场景中,比如单位职工通勤班车,沿途员工和班车司机同时用手机扫码登录本平台,输入约定的识别码,如大家约定000101为司机,0001xxx(xxx为员工姓名首拼音码),沿途员工点击“找人”,输入000101查询,便可定位司机当前位置,如勾“提醒”,则此时司机的手机响起音乐,并提醒司机是哪位员工查寻定位.另外,司机也可以输入0001,勾组搜索,则可以显示沿线员工当前位置,如图8所示.又如在某市举办大型文体活动,指挥中心要监控不同现场安保人员位置,防止现场人员在关键点缺位,可以利用本平台进行有效的管理和控制.

图8 沿途员工定位

2 主动定位平台设计关键技术

本平台系统服务器端基于windows操作系统,采用Mysql数据库和php语言编程,前端采用Html5+Javascript编程,前后端采用异步通信技术,前端定时(3 000 ms)将检测到的GPS坐标写入后端数据库.寻呼时从数据记录中读取被寻对象的GPS位置记录,转化为百度坐标并在百度地图显示出来.

2.1 移动设备GPS定位技术

本系统客户端使用移动设备,如果在PC端登录,不能获得当前用户的GPS位置信息.Html5增加了获取移动设备GPS坐标的内部对象,可以使用navigator.geolocation来简单地获取用户的地理位置信息.以下是系统获取GPS坐标的代码[6].

2.2 百度坐标转换API及百度地图API技术

如果直接使用GPS的定位,因为定位制式原因,定位结果与实际位置存在偏差,一般的做法是从系统将获得的GPS坐标先转换为百度地图坐标,再在百度地图上标示出该点的位置[7].这里用到了百度地图的两个API函数,在页面的头部引用导入[8-9].

其中convertor.js是百度地图坐标转换函数库,“http://api.map.baidu.com/api?v=1.4”远程引用百度的地图API接口,基于测试,只采用1.4版本.

变成百度的坐标(x1,y1),将(x1,y1)代入到mp.centerAndZoom(new BMap.Point(x1,y1),16),即百度地图的显示位置,这时把x1,y1连同用户登录码记录下来,再加上对(x1,y1)位置标示,就完成了用户百度地图位置定位.

2.3 页面前后端异步通信技术

为了保证客户端页面不因设置定时器而被反复刷新,系统对检测并转换后的坐标写入记录采用异步通信技术AJax.以下是实现主要代码[10]:

同时客户端还要定时检测数据记录中是否有未处理的被寻记录,如有前端的音频控件启动播放,这也用到了异步通信,基于篇幅,本文不做赘述.

3 结语

主动定位平台使用成熟的移动GPS定位、百度地理坐标转换和百度地图API技术,定位高效准确快捷.平台利用浏览器登陆网站,无需下载,即点即用,支持在线留言、应答,增加环境拍照,可通过照片确认地理位置,语音提示功能,让寻人变得更方便快捷.相比于目前主寻人与被寻人的一问一答式的定位方式,基于百度地图的主动定位平台有明显的优势,在旅游团定位管理、指挥中心巡更管理、厂区车辆管理等方面具有现实的应用意义.

目前html5自带GPS定位功能并被多数软件所应用,但是基于定位安全考虑和更快更准确定位要求,随着北斗卫星导航系统的应用成熟和北斗卫星民用级的webAPI会逐步推广普及,将在以后升级中加入北斗卫星定位功能.

猜你喜欢
代码导游百度
跟着西安导游吃,准没错
红领巾阵地之小导游
Robust adaptive UKF based on SVR for inertial based integrated navigation
创世代码
创世代码
创世代码
创世代码
百度年度热搜榜
不懂就百度
黄希川