【问题标题】:How can I do to return places in distance order如何按距离顺序返回地点
【发布时间】:2023-04-11 05:41:01
【问题描述】:
我有一个包含地址的数据库(可以说超过 50 个)。他们从一个应用程序向我发送他们的位置,我必须通过离他们发送给我的位置更近的人返回位置订单。我是否必须每次都调用 Google Maps API,并且 50 次才知道?或者还有另一种方式,具有更好的性能。
谢谢
【问题讨论】:
标签:
php
ios
mysql
api
google-maps
【解决方案1】:
我假设您的数据库是 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;
假设您有 lat 和 lon 列,并且将从数据库中获取地点并按距离排序。
查看此演示文稿作为参考并了解计算http://es.scribd.com/doc/2569355/Geo-Distance-Search-with-MySQL