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