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;
我试了多次,传入不同的经纬度,但是调试的时候距离结果都是一样的~求大神指导~
第一、两点间的直线距离平方:$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计算两个经纬度之间的距离问题,求指导的主要内容,如果未能解决你的问题,请参考以下文章