地图位置开发解析(一)

介绍

本文以腾讯位置服务为例,介绍一下在开发地图位置服务的一些思路和想法。
 
腾讯位置服务,提供了地点搜索,地址解析,逆地址解析,路线规划,距离计算,行政区划,坐标转换,IP定位的相关接口供大家使用。
 
使用之前需要注册自己的key,在这里,大家点击下面链接,就可以直接注册免费使用了。
 
邀请码: GUZRFLG
邀请链接: https://lbs.qq.com?lbs_invite=GUZRFLG

 
如果是个人开发测试学习,免费的调用次数已经足够我们使用了,如果需要商业使用,可以付费购买。
 
本篇文章只着重介绍路线规划服务,其他的模块,在后面一系列文章里会分别介绍。
 

路线规划

开发路线规划,提前需要准备的东西一定要有路网数据,如果想计算的准确,路网数据要尽可能的全和精确,不同等级的道路和相关道路属性都要有。
 
以腾讯为例,腾讯地图API给我们提供了驾车,步行,骑行,公交四种路线规划方式,具体可以在腾讯位置服务,WebService API下了解。
在这里插入图片描述
当道路数据准备好之后,所谓的路线规划,简单来说就是输入一个起始点,输入一个终止点,在地图上计算合理的路线,那么如何计算出合理的路线?
 
如果熟悉地图相关开发的,应该知道,计算两点直接的距离,需要的是俩个经纬度,而我们一般用地图的时候,起始点和终止点,输入的都是地址,所以在进行路线计算的时候,首先要用的一个就是地址解析。
 
地址解析不了解的同学,我在这里简单说一下,地址解析主要就是将输入的地址,转换成地图上对应的经纬度,反过来逆地址解析就是,将输入的经纬度转换成当前位置对应的地址。
 
对于地址解析和逆地址解析,听起来容易,但做起来其实是需要大量的地址数据作为支撑的,大体说一下需要用到的东西,地址数据库行政区划区分字典分词权重值(很多地址并不是我们想象的那么规范,所以解析的时候需要有取舍),POI数据等等,其中在分词的时候,要对行政区划和具体的门址地址库进行区分,解析。这里先简单了解了解,后续文章详细介绍这一块的时候,会重点说这些东西。
 
我们回到路线规划上去,在得到起始点和终止点的经纬度的时候,下一步要做的就是算路了,这个时候不同的分类,对应了不同的算路算法,像驾车,步行,骑行等,所以这就需要我们的道路数据全而精了,如果你只有一级道路,二级道路和高速公路这些,那去计算步行,岂不是没什么意义。
 
我们以驾车为例,计算两点之间最优的路线,主要就是从一个点出发,开始找路,首先你可以匹配离你最近的道路,然后出发,在每遇到一个岔路口的时候,都分别去找路,目的就是一直找到可以到达终点的线路。
 
在这里有的人会说,如果两地较远,那么路会非常非常多,要一条一条去找吗,还有就是算路的时间问题,如何可以更快的算出想要的路线?
 
首先俩点之间的路确实非常多,包括近路、远路、走不通的路都有,而我们在开始的时候是无法确定的,所以在最开始肯定要每一条路都去找,而在找的过程中,可以对已经找到的路进行过滤,这里的因素可以有红绿灯的个数,收费站的个数,道路行驶花费的时间是否已经相对于其他道路超出一个阈值,通过设置各种因素条件,很多道路在找到一定程度上就会舍弃,节省了时间,也不需要每一条道路都去找一遍。
 
另外,找路不是从起止点开始不停的找,一直找到终点,我们可以从起始点和终点同时开始找路,两边同时进行,直到汇合的时候,算路完成。
 
所以这样做的话,就会发现在两点之间找路,基本就是以点为中心,离点越近的路会找的越多,越往外发散,匹配的道路越少,速度也会更快。
 
由于公司规定原因,我不能把自己开发的相关源码拿出来分享,后续我看是否可以提取一些公共通用的算法,分享给大家。
 
如果你是开发底层位置服务进行路线规划的,可以简单参考参考,如果只是需要直接在业务上调用使用相关接口的,那可以直接使用腾讯提供的web接口,只要申请了自己的key,就可以免费调用了(附申请地址:https://lbs.qq.com?lbs_invite=GUZRFLG)。
 
最后大家若还想了解更多关于位置服务开发,后面我会把我开发过的地址解析,逆地址解析,距离计算,行政区划,坐标转换,IP定位等这些相关东西分享给大家。

相关推荐
©️2020 CSDN 皮肤主题: 点我我会动 设计师:白松林 返回首页