|
本帖最后由 不信佛的方丈 于 2016-4-20 11:03 编辑
现在外卖送餐或者叫车等很多基于用户当时位置的生活服务软件,打开软件的第一个界面,往往就获得了一个基于手机当前位置的一个文字描述信息,但如果深究这个描述信息是如何获得的,恐怕很多同学就未必清楚了,我在这将这个技术流程描述一下。
1: 获取当前经纬度 : 一般使用高德定位sdk ,依赖GPS , 基站 ,wifi 等信息,你可以获得一个表述当前手机位置的坐标值(X , Y) 例如:(132.33, 38. 79) . 【备注: 由于定位的系统原理拼劲,每次定位有一个随机误差,也就是每次定位的获得的结果坐标会有不同,但在实际应用时,往往会使用各种策略,来保持定位结果的稳定不变】
2: 坐标并不美丽: 对正常的人类来说,数字形式的坐标并不好理解,所以人类发明了地址,比如 “×××路××号”,使用高德的逆地理编码服务,当你输入一个坐标时,可以得到一个文字的地址描述,使用这个地址来描述用户所处的当前位置比坐标直观的许多。
3:但是在很多时候,地址也并不够精细,清晰,正常的人类更希望看到一个具体的POI 点(比如 ****KFC , ***公司 等这样的兴趣点),高德地图中提供了覆盖全国的几千万的POI 点,你可以用用户定位的坐标 周边,寻找一个最匹配用户当前位置的POI 点,来表示用户的当前位置。
3.1 高德提供周边搜索功能,根据用户当前坐标,搜索周边的POI 点。
3.2 很多时候,周边的POI 点实在太多了(一栋楼里可能就有上百家公司,而这些公司的POI 点可能都聚集在相似的位置上),所以我们的搜索引擎会根据这些点的热度,你输入的搜索关键词的相关性,距离等等众多因素,给你一个推荐的POI 结果排序。
3.3 如果您的应用场景外卖收餐的场景,那么为了搜索的准确性,你可以考虑加入类别的过滤,很显然,会收外卖的地方,一般是学校、办公楼、居民小区这样的地区,这样你可以在搜索条件中,指定搜索这几类的点,而排除其他类型的POI .
3.4 从搜索的结果中,你可以考虑把结果的第一位的POI 的name / Address 描述 挑选出来做为用户当前位置的描述,往往这已经能够覆盖很大一部分用户了。
4: 除此之外,我们还能根据当前位置(坐标),高德地理编码引擎还能解析一下该坐标所位于的AOI面(Area of Interesting), 比如你位于 ××× 大学内 , 这样您有能得到一个该坐标所在区域的大概名称描述,当然,这个区域的大小范围,有很大的可能,有可能是一个很小的居民小区,也有可能是一个非常大范围的公园。
|
|