使用mysql和php计算2点之间的距离

时间:2013-05-13 21:22:26

标签: php mysql distance

我有一个地图页面,其中包含用于计算距离的格式,但这包含2个下拉列表,用于处理数据库中的所有城市,以允许用户从第一个下拉列表中选择第一个点,从第二个下拉列表中选择第二个点然后列出使用数据库中存储的每个城市的经度和纬度来计算距离。

village table:

 - id
 - village_name
 - lattitude
 - longiude
 - district_id

i have this query untill now but i do not know if it is right 

<?php 
    if(isset($_POST['calculate']))
    {
        $sql = mysql_query("SELECT ( 3959 * acos( cos( radians(37) ) * cos( radians( lattitude ) ) * cos( radians( longitude ) - radians(-122) ) + sin( radians(37) ) * sin( radians( lat ) ) ) )FROM village")or die(mysql_error());
    }

?>

问题是我不知道如何使用数据库中存储的纬度和经度计算2点之间的距离

我确实读过有关半胱氨酸的公式,但我不知道如何在这里使用

我不希望任何人为我做这件事,而是向我解释并帮助我 任何人都可以帮我这个????

1 个答案:

答案 0 :(得分:1)

在我看来,你应该用php计算它。

首先从数据库中获取lat和lon(我猜它们是浮点格式)

$LonS - Start lon
$LonE - End lon
$LatS - Start lat
$LatE - End lat

这是大圈子公式 http://en.wikipedia.org/wiki/Haversine_formula

点(。)表示乘法,在php'*'中。所以php中的最终代码:

$R = 6371; //km
$A = pow(sin(($LatE - $LatS)/2), 2) + cos($LatS) * cos($LatE) * pow(sin(($LonE - $LonS)/2) , 2);
$C = 2 * atan2(sqrt($A), sqrt(1 - $A));
$D = $R * $C;