使用My SQL的纬度和经度记录查找最近的地方

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

我有一个名为

tbl_places
的 mySql 表 这包含字段
Place_id
PlaceName
Place_LATITUDE
place_LONGITUDE

我现在想在

place detail
页面使用它 如果当前打开页面的
place_id
是 4,那么我想要距离该位置最近的最多 6 条记录。

假设当前地点是:

 place_id = 4
 place_name = Lal Killa
 place_LATITUDE = 77.2413969039917
 place_LONGITUDE = 28.653838307772872

我不明白如何找到距离当前地点最近的地点??

php mysql google-maps geolocation
3个回答
1
投票

使用以下查询:

SELECT
    Place_id,
    PlaceName,
    (
        3959 
        * acos(
            cos( radians(37) ) 
            * cos( radians( Place_LATITUDE ) ) 
            * cos( radians( Place_LONGITUDE ) - radians(-122) ) 
            + sin( radians(37) ) 
            * sin( radians( Place_LATITUDE ) ) 
        ) 
    ) AS distance 
FROM tbl_places 
HAVING distance < 25 
ORDER BY distance 
LIMIT 0 , 20;

注意 - 这里纬度 = 37 & 经度 = -122

此外,请查看此处以获取更多参考。


0
投票

您可以使用 Cohen–Sutherland(点裁剪)算法来了解附近的人,如果您想最小化结果,请将其设置为从 0 到 YOUR_LIMIT 的增量顺序。

它比将极坐标[(即)纬度和经度]转换为 XY 的公式更好


0
投票

我们可以找到以英里和公里为单位的距离

一英里

$query = sprintf("SELECT address, name, lat, lng, ( 3959 * acos( cos( radians('%s') ) * cos( radians( lat ) ) * cos( radians( lng ) - radians('%s') ) + sin( radians('%s') ) * sin( radians( lat ) ) ) ) AS distance FROM markers HAVING distance < 25 ORDER BY distance LIMIT 0 , 20",


  mysql_real_escape_string($center_lat),
  mysql_real_escape_string($center_lng),
  mysql_real_escape_string($center_lat),
  mysql_real_escape_string($radius));*/
$result = mysql_query($query);

公里

$query = sprintf("SELECT usermail, res_name, lat, lng, ( 6371  * acos( cos( radians('%s') ) * cos( radians( lat ) ) * cos( radians( lng ) - radians('%s') ) + sin( radians('%s') ) * sin( radians( lat ) ) ) ) AS distance FROM mstuser HAVING distance < '%s' ORDER BY distance LIMIT 0 , 20",


  mysql_real_escape_string($center_lat),
  mysql_real_escape_string($center_lng),
  mysql_real_escape_string($center_lat),
  mysql_real_escape_string($radius));

请检查此网址:https://myphpinformation.blogspot.com/2015/12/get-near-by-location-using-latitude-and-longitude-php-in-kilometer.html

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