刘鑫龙,肖凯
(镇江市勘察测绘研究院,江苏 镇江 212000)
基于Android的公共自行车查询系统研究
刘鑫龙*,肖凯
(镇江市勘察测绘研究院,江苏 镇江 212000)
基于Android的公共自行车查询系统利用手机定位、无线网络、路径导航等技术实现在移动端查询自行车停靠点位置信息、车辆数信息和用户当前位置到停靠点路径导航功能,研究论证了系统的可行性,能够达到方便市民使用公共自行车、提高公共自行车使用率的目的。
Android;公共自行车;手机定位;路径导航
作为镇江“四大行动”之一的公共自行车服务系统已经投入使用半年多了,给市民出行带来了极大的方便[1]。虽然有着配套的网站查询系统,但是因为移动端的跨平台局限性,移动端查询公共自行车停靠点位置信息和停靠点车辆数比较困难,而常规的商业手机地图(例如百度,谷歌)由于POI点数据更新慢,难以及时添加自行车相关信息。因此,迫切需要一款有着镇江自身城市特点,包含公共自行车点位信息的移动端APP。
在当今网络信息时代,Android、IOS移动端系统的成熟和无线通信网络的发展,使得通过无线移动终端实时查询公共自行车点位信息成为可能[2]。本文拟开发基于Android的自行车查询系统,尝试研究移动端的位置定位[3]、公共自行车POI点查询和移动端到指定自行车点路径导航等内容,使用户通过手机等移动设备实时、快速地查询公共自行车点位信息,为市民提供最优到达路径导航,方便市民使用公共自行车。
2.1 系统的软件界面类型
软件界面包括欢迎界面、用户定位界面、地图浏览查询界面、公共自行车POI点浏览界面和路径导航界面等内容[4]。
2.2 系统的功能模块
系统功能由定位检索模块、数据管理模块、信息查看模块、信息管理模块组成。具体系统功能如图1所示[5]。
系统的功能流程图如图2所示。
图1 系统功能图
图2 系统功能流程图
系统地图采用镇江市电子地图,为了进行公共自行车POI查询和路径导航,需选用ArcGIS Server10和ArcGIS API for Android。
3.1 发布地图
镇江市勘察测绘研究院自主研发的镇江市电子地图已于2013年11月底通过了专家组的验收,其地图具有基础数据全、数据更新快等特点,因此采用为本系统地图;公共自行车POI点是实地采集的点位数据,保证了点位信息的准确性。为了后期的路径导航,使用制图软件对电子地图道路数据进行逐路打断,保证每条道路是连续的多段线。
使用ArcGIS Server发布地图服务,地图服务分为底图服务和公共自行车POI点专题图服务,默认的地图服务功能是Mapping和KML[6]。发布专题图服务时使用Network Analysis功能,以便进行路径分析。为了快速访问地图服务的功能,在地图服务发布成功后,要进行缓存制作,可以根据需求设置比例尺 1∶1 128.5, 1∶2 257,1∶4 514,1∶9 028,1∶18 056,1∶36 112等。
3.2 加载底图
加载底图使用ArcGIS API for Android中的ArcGISTiledMapServiceLayer和ArcGISLocalTiledLayer。其中,ArcGISTiledMapServiceLayer用来加载ArcGIS Server 发布的缓存地图服务(如图3所示),首先实例化一个ArcGISTiledMapServiceLayer类,将缓存地图地址信息赋予实例化后的对象,通过MapView的addLayer方法加载该对象,再根据缓存命名规则使用row、col、level 参数读取地图服务的缓存文件,实现加载arcgisserver的缓存地图;ArcGISLocalTiledLayer用来加载手机存储卡中的离线地图包,以解决在手机端网络较差时加载大范围、低精度地图时速度慢的问题。
图3 地图加载,手机定位,方向指示
在使用手机网络读取远程地图服务时,必须获得手机的访问网络权限 android:name="android.permission.INTERNET"/>
3.3 位置定位
通过使用ContextgetSystem Service,并传入Context,LOCATION_SERVICE参数获取定位管理器实例。重写LocationListener接口,使其能够监听定位信息的改变。对LocationManager进行初始化,并在它的onCreate()方法中注册定位监听器。由于GPS定位速度慢,要求室外开阔等条件,这里使用的LocationProvider是“network”(NETWORK_PROVIDER)。
由于手机不是专业的定位设备,不可避免地会有定位误差,电子罗盘是目前多数手机拥有的硬件设备,因此考虑在手机定位同时,引入方向指示功能,增加用户识别自身位置的准确率。对SensorManager进行一些初始化工作,使其能够通过getSystemService获取SENSOR_SERVICE电子罗盘服务,重写电子罗盘监听器接口,把手机朝向变化值转化为角度值,把该数值运用到代表手机当前位置的蓝色三角箭头上,使其能够根据手机朝向变化自身箭头朝向,达到方向指示功能(如图3所示)。
3.4 公共自行车POI点查询
单独制作的公共自行车POI点数据图层以“自行车”名字命名,发布成网络服务后,其网络路径即为"*/ArcGIS/rest/services/自行车/MapServer",在编辑文本框输入自行车,点击线路查询,程序使用字符拼接,生成完整的url,进而查询获得公共自行车POI点数据,加载在底图之上(如图4所示)。
图4 获得公共自行车停靠点信息
3.5 查询自行车站点信息和车辆数
ArcGIS API for Android提供了一种ArcGIS FeatureLayer类,能够在加载底图同时后台加载用户预感兴趣的POI点信息,通过GraphicsLayer的方法getGraphicIDs(float x,float y,int tolerance)来获取要素,其中x和y是屏幕坐标,tolerance是容差,通过这个方法可以间接的获取所需的Graphic对象,在用户点击地图上代表自行车停靠点的图标时,通过getAttributes()方法获取该停靠点的名称和自行车数量等用户关注的信息,然后调用预先写好的Callout模板,将信息填充进去,以小窗口形式展现给用户。
3.6 路径导航
ArcGIS路径分析至少需要两个点的位置信息,在进行路径导航时需要事先指定自行车停靠点和用户当前位置,在获得用户当前位置后,还需要某一自行车停靠点位置信息,在手机地图上任取一个停靠点作为指定点。在屏幕的onLongPress事件中处理路径分析功能。
StopGraphic point1=new StopGraphic(p1);
StopGraphic point2=new StopGraphic(p2);
//p1是用户当前位置点,p2是某一自行车停靠点
把两个点的位置信息赋予NAFeaturesAsFeature实例化后的对象rafaAsFeature,作为路径分析停靠点要素信息。
NAFeaturesAsFeature rafaAsFeature=new NAFeaturesAsFeature();
rafaAsFeature.setFeatures(new Graphic[]{point1,point2});
为了保证路径分析结果能显示在地理底图上,需要设置与底图相同的空间坐标系,同时还需要定义路径长度单位,这里设置为米。
rpParameters.setStops(rafaAsFeature);
rpParameters.setOutSpatialReference(wm);
rpParameters.setDirectionsLengthUnit(DirectionsLengthUnit.METERS);
创建一个RoutingTask类的对象,赋予该对象路径分析地址属性,调用solve方法,进行路径分析查询,将路径分析获取的线路、距离等信息涵盖在mResult里。
RoutingTask rTask=new RoutingTask("http://*/ArcGIS/rest/services/bike/NAServer/Route");
mResult=rTask.solve(rpParameters);
运用绘图工具,将路线绘制在MapView上,提取mResult线路长度信息,显示在屏幕上方,如图5所示。
Graphic routeGraphic = new Graphic(curRoute.getRoute().getGeometry(),routeSymbol);
curDirections.add(String.format("Length:%.1fmiles",rDirection.getText(),rDirection.getLength()));
图5 路径导航
本文在分析移动端常规查询镇江市公共自行车相关信息局限性的基础上提出基于Android的自行车POI点查询系统,应用手机定位、无线网络、ArcGIS等相关技术,实现移动端快速查询公共自行车停靠点位置、停靠点车辆信息和用户所在位置到停靠点的路径导航等功能,为市民“低碳出行”提供便利,提高公共自行车使用率。
本系统还有进一步提升空间,后期可以连接镇江市公共自行车运营公司数据库,实时获取停靠点当前可借车辆和可停车位,为市民使用公共自行车提供参考,节约市民出行时间。系统还可以创建用户注册机制,绑定市民自行车卡,实现在移动端快速查询自行车卡剩余金额和自行车卡丢失后快速挂失,方便市民使用公共自行车、节约自行车运营公司管理费用。
[1] 朱玮,庞宇琦,王德等. 公共自行车系统影响下居民出行的变化与机制研究——以上海闵行区为例[J]. 城市规划学刊,2012(5).
[2] 韩玉飞,殷旭东. 基于Android的公共自行车查询系统设计与实现[J]. 电脑编程技巧与维护,2013(18).
[3] 曹士谦,郝鑫,杨雪琴等. 基于AGPS的公共自行车网点地图的移动应用[J]. 软件导刊,2011(7).
[4] 李丹,郭文明. 基于Android平台的无线点餐系统的设计与实现[D]. 北京:北京邮电大学,2012(1).
[5] 王亚维,徐霞. 基于Android的大学生兼职系统设计与实现[J]. 地理空间信息,2013(2).
[6] 刘祥磊,马静. 基于ArcEngine的ArcGIS矢量数据到KML文件转换方法研究[J]. 国土资源遥感,2007(73).
[7] W.Frank Ableson,Charlie Collins,Robi Sen,Unlocking Android:A Developer's Guide[M]. 人民出版社,2010年4月.
The Research of Public Bike Query System Based on the Android
Liu Xinlong,Xiao Kai
(1.Zhenjiang Institute of Surveying and Mapping Survey,Zhenjiang 212000,China;2.Institute of Surveying and Mapping Engineering of Jiangsu Province,Nanjing 21000,China)
Public bike query system based on the Android utilizes the technology of the telephone location,wireless network,path navigation to achieve the functions such as query the position of the Bicycle parking spots,the number of the bicycle,the route from the location of the telephone to the Bicycle parking spots. The system is proved to be feasible. The system can make a convenient for the citizens to rent and return the bicycle so that it can increase the utilization rate of the bicycle.
android;public bicycle;the telephone location;path navigation
1672-8262(2017)04-42-04
P208.2
B
2016—11—09
刘鑫龙(1988—),男,硕士,工程师,主要从事GIS系统开发与研究工作。