找到经纬度记录[复制](find records with latitude and longitu

2019-10-29 02:16发布

可能重复:
之间找到两个纬度/长点的距离最快的方法

我有位置表,包括所有的纬度和经度值的位置。 我LAT获取特定位置。 LOGN。 和半径。 现在,我想找到这个范围内,并为指定纬度所有reocords。 而长。 值。 我使用下面的查询。 但我不知道是否能给予我正确的结果还是不行。

从给定的纬度和长我发现了lat.min和最大的 -

$lng_min = $longitude - $radius / abs(cos(deg2rad($latitude)) * 69);
$lng_max = $longitude + $radius / abs(cos(deg2rad($latitude)) * 69);
$lat_min = $latitude - ($radius / 69);
$lat_max = $latitude + ($radius / 69);

然后用下面的查询 -

SELECT * FROM  merchant_branches,locations 
where locations."coorX" BETWEEN $lng_min AND $lng_max 
AND  
locations."coorY" BETWEEN $lat_min AND $lat_max 
and merchant_branches.location_id = locations.id

其中location id为merchant_brach表的外键。

我很困惑,我得到的结果。 PLZ帮我。

Answer 1:

你必须使用这样的事情来获得最近的结果给定的位置

$query = sprintf(
         "SELECT foo,
                  6371 * ACOS( Cos(RADIANS(lat)) * COS(RADIANS(%f))
                      * COS(RADIANS(%f) - RADIANS(lng)) + SIN(RADIANS(lat))
                      * SIN(RADIANS(%f)) ) * 1000 AS distance
            FROM `%s`
        ORDER BY distance",
        $lat, $lag, $lng, $table
    );

你必须设置$lat$lng$table根据您的表结构和可能设置限制的结果。

你得到一个详细的植这里地理距离搜索与MySQL 。



文章来源: find records with latitude and longitude [duplicate]