转载请注明出处:http://blog.csdn.net/yianemail/article/details/47130525
现在大多基于地图的应用都有查看附近商家的实现,之前在网上看到别的一些方法,大多是去数据库中查看每条数据库记录的lbs 经纬度,然后跟当前经纬度计算距离,在某个范围内的则是周围商家。
数据库记录小还好,如果数据库非常庞大,每条都要做对比,岂不是很耗性能?
地球是圆形,每条纬度不等长。
一 :
如果我们把每条数据库记录lbs信息抽取到一个集合(数组),然后根据当前位置以及距离(假设周围3公里)算出在同一纬度,左右各三公里。然后依据左右三公里处的经度信息
利用二分查找确定该经度在集合中的位置(或者一个合适的位置,因为集合中不一定存在该经度值)。这样只对在该范围内的商家lbs信息进行距离计算即可。看一张图:
假设半径为3公里。我们只需要计算在该半径内的商店lbs信息,计算量就会少很多。
二:实现。实体类Location.java