我有一个 map 页面,其中有一个用于计算距离的格式,但这包含两个处理数据库中所有城市的下拉列表,以允许用户从第一个下拉列表中选择第一个点,从第二个下拉列表中选择第二个点然后使用数据库中存储的每个城市的经度和纬度来计算距离。
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());
}
?>
问题是我不知道如何使用数据库中存储的纬度和经度来计算两点之间的距离
我确实读过半正矢公式,但我不知道如何在这里使用它
我不想让任何人为我做这件事,而是向我解释并帮助我 谁能帮我解决这个问题???
最佳答案
我认为你应该使用 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;
关于php - 使用mysql和php计算两点之间的距离,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/16531363/