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

标签 php mysql distance

我有一个 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/

相关文章:

mysql - 动态更改选项文件中设置的数据库系统变量的值

iOS滑动距离与加速度计

php - 无法使 "Reload"脚本在 PHP 中工作

php - 将数据库记录从东部时间转换为格林威治标准时间

php - 使用应用程序文件安装 EasyPHP 和 MySQL 数据

r - 在数据框中搜索和匹配

C:计算 2 个 float 模 12 之间的距离

php - 确实有时不调用 mysqli_result::free、mysqli_result::close、mysqli_result::free_result 可能更有益吗

mysql - 使用 WHERE IN 从多个表连接

MySQL - 在一行中获取与外键相关的所有数据