0

我有一个地图页面,它有一个用于计算距离的格式,但这包含 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());
    }

?>

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

我确实读过关于haversine公式,但我不知道如何在这里使用它

我不希望任何人为我做这件事,而是向我解释并帮助我,谁能帮我解决这个问题????

4

1 回答 1

1

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

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

$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;
于 2013-05-13T21:37:23.587 回答