就是车辆卫星定位时,客户不用打开地图,就能知道车辆的地点,
就是根据经纬度获取地名的问题,
比如 读得地名:“广西省南宁市武鸣”
或者读得地名:“广西省南宁火车站”
或者读得地名:“广西省南宁友爱路宾华酒店”
这个很麻烦,
但分析一下,也就不是很麻烦了,
平面地图分三种图形:点、线、面
所以做三种测试就行:
1. 是否落在点上(或者点的周围)
2. 是否落在线上(或者线的左右)
3. 是否落在面上
第一步:点的测试,就是寻找 经纬度 最临近的点,
采用两点间坐标来测试的方式,但是全国的地名数量巨大,
一个一个测试速度存在问题,那如何优化呢?
那就是让测试的点尽可能少,但又要准确。
这里可以采用逐级搜索的方式,逐级搜索,
就是根据 经纬度 指定一个范围,在这个范围内搜索,没有搜索出结果,
再放大范围,这样一步一步放大。而范围的确定,却是靠经验值,
总之,准则是“测试的点尽可能少,而且不能遗漏”
第二步:线的测试
寻找 经纬度 最临近的线,
这里先要了解 地图 是如何表示线的,
因为 地图里的线,通常都是曲线,比如 公路、铁路、河流 等.
所以地图 是通过很多个连续的线段 来连接成一条线的,
线是由线段组成,所以存储 线段 的两个点坐标就行了。
线的测试,