php计算两个经纬度之间的距离问题,求指导

Posted

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了php计算两个经纬度之间的距离问题,求指导相关的知识,希望对你有一定的参考价值。

function getDistance($lat1, $lng1, $lat2, $lng2)



$earthRadius = 6367000.0000000000;

//纬度角

$lat = $lat2 - $lat1;

//经度角

$lng = $lng2 - $lng1;

//两点之间的直线距离平方

$len = 4 * $earthRadius * $earthRadius - 2 * $earthRadius * $earthRadius * cos($lng) - 2 * $earthRadius * $earthRadius * cos($lat);

//两点之间 处于同一平面上 所形成的弧度 对应的角度

$a = cos((2 * $earthRadius * $earthRadius * cos($lng) + 2 * $earthRadius * $earthRadius * cos($lat) - 2 * $earthRadius * $earthRadius) / 2 * $earthRadius * $earthRadius);

//两点间的距离

$s = 2 * $earthRadius * pi() * $a / 360.000000000;

return $s / 10000.0000000000;


我试了多次,传入不同的经纬度,但是调试的时候距离结果都是一样的~求大神指导~

参考技术A 不会算这个东西,不过看代码发现你的代码里有些问题
第一、两点间的直线距离平方:$len算完了后面没有用到,也没有return, 完全就没用了
第二、输入相同的经纬度,结果居然不是0,而且还是个很大的数,所以应该是有问题的

你可以百度一下“php 按经纬度算两点间距离”,有不少现成的代码
我看这个介绍的比较详细,还有代码,你可以看看
http://blog.csdn.net/vincent_czz/article/details/7963740本回答被提问者采纳
参考技术B 这个主要是数学好吧?

PHP计算两个经纬度地点之间的距离

/**
 * 求两个已知经纬度之间的距离,单位为米
 
 * @param lng1 $ ,lng2 经度
 * @param lat1 $ ,lat2 纬度
 * @return float 距离,单位米
 * @author www.Alixixi.com 
 */
function getdistance($lng1$lat1$lng2$lat2) {
    // 将角度转为狐度
    $radLat1 deg2rad($lat1); //deg2rad()函数将角度转换为弧度
    $radLat2 deg2rad($lat2);
    $radLng1 deg2rad($lng1);
    $radLng2 deg2rad($lng2);
    $a $radLat1 $radLat2;
    $b $radLng1 $radLng2;
    $s = 2 * asin(sqrt(pow(sin($a / 2), 2) + cos($radLat1) * cos($radLat2) * pow(sin($b / 2), 2))) * 6378.137 * 1000;
    return $s;


以上是关于php计算两个经纬度之间的距离问题,求指导的主要内容,如果未能解决你的问题,请参考以下文章

PHP计算两个经纬度地点之间的距离

计算两个经纬度之间的距离

如何使用php计算出两个经纬度之间的距离

PHP 计算两个坐标之间的距离(纬度,经度)

如何计算经纬度之间的距离

经纬度的距离计算公式