一、背景情况
1、当前卫星定位系统很发达。
2、通过人造卫星定位系统,用一颗卫星无线导航芯片就能实时获取当前的经纬和高度坐标。
3、各大地图导航厂商通过实地定位测绘建筑物和各种交通设施的位置,创建电子地图,就能根据卫星终端实时定位,从而在电子地图中找到对应的经纬位置。
二、卫星地图导航的前提条件
1、建立一套完善的,高精度的卫星导航系统。
2、手机等终端拥有兼容的卫星定位芯片。
3、终端拥有一套方便使用该定位芯片的软件接口库。
例如:JavaScript脚本的定位接口,安卓的卫星定位传感器接口。
4、地图厂商拥有一定区域内的实地定位测绘数据,并且用图形来绘制大厦、湿地、河流等地理标志物。
有的地方需要人工标注,添加介绍信息。
该测绘数据方便用来绘制电子设备中的电子地图。
三、导航APP绘制电子地图的思路
(一)选定一个经纬坐标区域,用默认的比例尺。
(二)、用图形库来绘制各种地理图标。
1、绘制河流,山,公路,建筑。
2、绘制立体图,卫星高清图。
3、绘制商场和大厦每一层的商户信息。
4、如果视角变化,地图也重新绘制。
地图数据一般事先下载存在设备里。
按照顺序,先绘制什么,后绘制什么。
每条河流,可以取几个关键点,最后用贝塞尔曲线来绘制,河水颜色一般都是蓝色,再绘制一个河的名字在中间。
(三)根据用户的操作来不断重新绘制
1、用户调整视角和俯仰方向后,重新计算,重新绘制。
2、用户进行缩放时,根据缩放来隐藏和显示某些地标和单位名。
需要确定地标的等级,显示在相应的缩放级别。
四、需要及时更新地图信息
1、有的时候道路和建筑、经营者每天都在变化和更新。
2、需要地图经营者不断地来实地测绘和调整标注。
工作量很大。
五、怎么进行卫星导航?
(一)用法
1、输入起点和终点,自动根据交通方式来计算出行路线。
2、用户选择路线和交通方式开始导航后,实时跟踪和定位当前位置,提示前进多少米,哪里转向,红绿灯,路口等信息。
(二)具体实现
1、确定节点
把起始位置和终点位置附近的所有公交站点、线路、地铁站、高铁站各自都生成一个节点。
地铁站是一个节点。
路口是一个节点。
公交站点是一个节点。
收费站是一个节点。
红绿灯是一个节点。
2、确定节点之间的有向路线
把这些节点构成一个有向图结构。
根据有向图的算法,求两个节点之间的最短路径。
节点和节点之间是有方向的。
在双向马路中出行两边方向相反。
3、根据出行方式和公路等级,筛选出路线和路线的坐标相关信息,最终找到关键的一群节点,也就确定了路线。
常见出现方式:公共交通、智行、骑车、自驾、地铁、走路。
公路等级:国道高速、市级道、城区道、乡村道、人行道。
路线的关键节点:路的起点、终点、方向、弯曲信息、长度。
4、一条最佳导航路线是根据计算获得的。
首先根据交通方式排斥一些路线,例如坐公交肯定排除附近的地铁节点。
然后找出起始节点和终点节点之间的那些交通节点。
一条公路的通行方向,转弯属性,路口通向哪里,路口红绿灯情况也需要判断。
5、指定路线后,开始导航
算法如下:
while(退出导航为假){1、获取一次卫星定位。2、根据定位,及时更新当前在地图上的位置信息。(需要重新绘制)3、判断当前是否在这条导航路线的经纬位置区域中。如果偏离导航,提示您已经偏离路线。还可以提示是否重新规划路线。4、休眠一段时间,可能是5毫秒。}
导航的提示信息一般通过提示框显示,例如直行500米,过路口右转。
六、主要难点
(一)电子地图的绘制
(二)根据地图信息,根据起点和终点的经纬坐标,计算起点和终点两者之间所有可能的路线,选择一条最短的。
(三)实地考察和记录地理位置。
(四)设计文件格式来存放地图的各种要素的信息。
要求根据经纬坐标方便查询位置。
要求能记录道路,记录是否可以行机动车,步行,自行车骑行。
要求记录公交站牌的经纬坐标,每个站点的先后顺序。