2016-01-13 51 views
0

我有一个数据库满地点(可以说超过50)与他们的地址。并且从APP向我发送他们的位置,并且我必须按照他们发送给我的位置更近的位置顺序返回。我是否每次都必须进行Google Maps API通话,并且需要知道吗?或者有另一种方式,更好的表现。 谢谢我该怎么做,以距离顺序返回地方

+0

如果储存在那里纬度\经度,你可以对它们进行排序 – 2016-01-13 03:33:07

+0

商店纬度和经度为你的位置和[使用空间索引来查找最近的一个](http://dba.stackexchange.com/questions/4214/how-to-best-implement-nearest-neighbour-search-in-mysql)。 – kozlice

回答

-2

我假设你的数据库是MySQL,并且你有存储位置的经度和纬度。

您可以使用SQL查询执行地理空间搜索。例如这一个

set @orig_lat=122.4058; 
set @orig_lon=37.7907; 

SELECT *, 3956 * 2 * ASIN(SQRT(POWER(SIN((@orig_lat - abs(dest.lat)) * pi()/180/2),2) + COS(@orig_lat * pi()/180) * COS(abs(dest.lat) * pi()/180) * POWER(SIN((@orig_lon – dest.lon) * pi()/180/2), 2))) as distance 
FROM Places dest 
ORDER BY distance; 

这假设你有经度和纬度列,并将从数据库中获取地点,并按距离排序。

看看这个演示文稿作为参考和d了解计算http://es.scribd.com/doc/2569355/Geo-Distance-Search-with-MySQL

+1

链接只有答案是不鼓励 – 2016-01-13 03:42:02

+0

感谢您的注意。我更新了回复并添加了该链接作为参考。 –