我正在开发一个网络应用程序,用户可以在地图(Google Maps API)中设置一个位置,然后我将坐标存储在数据库中。
在另一页上,我想要进行搜索,其中包括获取本地坐标并根据半径检索先前存储在数据库中的附近位置。
我该怎么做?
您可以使用所谓的 Haversine 公式。
对于 MySQL:
SELECT
*,
(
3959 * acos(
cos(
radians(input_lat)
) * cos(
radians(lat)
) * cos(
radians(lng) - radians(input_lng)
) + sin(
radians(input_lat)
) * sin(
radians(lat)
)
)
) AS distance
FROM
your_table
HAVING
distance < 5
其中
input_lat
和 input_lng
是您的点的坐标,lat
/ lng
是您的表格列。上面将列出 5 英里范围内的位置。
将
3959
替换为 6371
以更改为公里。
听起来像一个“商店定位器脚本”,谷歌对此有一个介绍:
https://developers.google.com/maps/articles/phpsqlsearch_v3
您需要做的是创建一个后端,允许您的用户将每个地点输入数据库。这是一项相当大的任务,如果我是你,我会采用开源脚本或类似脚本并根据你的需求进行调整。
例如:
https://github.com/bjorn2404/jQuery-Store-Locator-Plugin
我会搜索“免费商店定位器脚本”并尝试他们的演示,看看什么最吸引您。