Php 使用谷歌地图显示地理位置x英里范围内的地址

Php 使用谷歌地图显示地理位置x英里范围内的地址,php,javascript,mysql,google-maps,Php,Javascript,Mysql,Google Maps,在我的数据库中,我有一个地方列表,每个地方都有一个街道名称和编号、邮政编码、城市和县。其中一些具有经纬度位置 我以市中心的地理位置为例。我只想在谷歌地图上显示距离市中心X英里以内的地方 如果我的每个工作地点都需要一个地理位置,我也许可以设置一个脚本,使用google maps api使用地理编码来获取我所有工作地点的地理位置,并使用lat/lng更新数据库。然后我会有一个数据库,里面有大量的lat和工作地点 一旦所有的地方都有了lat/lng,那么mysql也许可以返回范围内的地址?一旦你有了l

在我的数据库中,我有一个地方列表,每个地方都有一个街道名称和编号、邮政编码、城市和县。其中一些具有经纬度位置

我以市中心的地理位置为例。我只想在谷歌地图上显示距离市中心X英里以内的地方

如果我的每个工作地点都需要一个地理位置,我也许可以设置一个脚本,使用google maps api使用地理编码来获取我所有工作地点的地理位置,并使用lat/lng更新数据库。然后我会有一个数据库,里面有大量的lat和工作地点


一旦所有的地方都有了lat/lng,那么mysql也许可以返回范围内的地址?

一旦你有了lat/long数据,如果有人给你mysql格式的大圆距离公式,这并不难

@玛吉给了一个很好的推荐人

索引策略:请记住,一分钟的纬度(1/60度)是一海里,或全世界1.1515法定英里(约)。所以索引你的纬度栏,像这样做你的搜索。(如果你在世界上使用公里的地区,你可以转换;对不起,以旧的大英帝国为中心的答案,但他们确实定义了海里。)

其中mylat位于column.lat-(myradius*1.1515)和column.lat+(myradius*1.1515)之间

(大距离公式)最有可能的情况是,您希望使用空间填充曲线或空间索引将二维问题简化为一维问题。例如,可以将lat/long对与z曲线或希尔伯特曲线组合。我自己用希尔伯特曲线来搜索邮政编码。你可以在phpclasses.org(希尔伯特曲线)上找到我的解决方案。

你说的是IP地址吗?@etbal我说的是街道地址。@maggie谢谢,这正是我需要的
WHERE mylat BETWEEN column.lat-(myradius*1.1515) AND column.lat+(myradius*1.1515)
  AND (the big distance formula) <= myradius
WHERE mylat BETWEEN column.lat-(myradius*1.1515) AND column.lat+(myradius*1.1515)
  AND mylon BETWEEN column.lon-(myradius*1.1515) AND column.lon+(myradius*1.1515)
  AND (the big distance formula) < myradius