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

Eve*_*nça 7 google-maps google-maps-api-3

我正在开发一个网络应用,用户在地图中设置一个位置(Google Maps API),我将坐标存储在数据库中.所以,在另一个页面,我想进行搜索,包括获取我的本地坐标,并根据半径检索先前存储在我的数据库中的附近地点.我怎样才能做到这一点?

MrU*_*own 14

您可以使用所谓的Haversine公式.

$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";
Run Code Online (Sandbox Code Playgroud)

$lat$lng是你点的坐标,和lat/ lng是你的表列.以上将列出5 nm范围内的位置.更换3959通过6371更改为公里.

  • 这是维基百科链接中解释的公式。我不是数学家,所以很难提供比链接页面更多的见解。它只是对 MySQL 进行了*翻译*。它基本上允许在地球表面某个半径内找到点,正如您可能知道的那样,地球表面并不平坦;) (2认同)