如何搜索数据库中存储的附近地点?

问题描述 投票:0回答:2

我正在开发一个网络应用程序,用户可以在地图(Google Maps API)中设置一个位置,然后我将坐标存储在数据库中。

在另一页上,我想要进行搜索,其中包括获取本地坐标并根据半径检索先前存储在数据库中的附近位置。

我该怎么做?

google-maps google-maps-api-3
2个回答
17
投票

您可以使用所谓的 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
以更改为公里。


1
投票

听起来像一个“商店定位器脚本”,谷歌对此有一个介绍:

https://developers.google.com/maps/articles/phpsqlsearch_v3

您需要做的是创建一个后端,允许您的用户将每个地点输入数据库。这是一项相当大的任务,如果我是你,我会采用开源脚本或类似脚本并根据你的需求进行调整。

例如:

https://github.com/bjorn2404/jQuery-Store-Locator-Plugin

我会搜索“免费商店定位器脚本”并尝试他们的演示,看看什么最吸引您。

© www.soinside.com 2019 - 2024. All rights reserved.