您的位置:首页 > 编程语言 > PHP开发

利用php 计算两点地理经纬坐标之间的距离

2017-10-09 11:29 573 查看
功能:根据圆周率和地球半径系数与两点坐标的经纬度,计算两点之间的球面距离。 

获取两点坐标距离:

<?php

/** 

*
计算两点地理坐标之间的距离 

*
@param Decimal $longitude1 起点经度 

*
@param Decimal $latitude1 起点纬度 

*
@param Decimal $longitude2 终点经度  

*
@param Decimal $latitude2 终点纬度 

*
@param Int $unit 单位 1:米 2:公里 

*
@param Int $decimal 精度 保留小数位数 

*
@return Decimal 

*/

function
getDistance($longitude1,
$latitude1,
$longitude2, $latitude2,
$unit=2,
$decimal=2){  

$EARTH_RADIUS
= 6370.996;
// 地球半径系数
 

$PI
= 3.1415926;
 

$radLat1
= $latitude1
* $PI
/ 180.0;
 

$radLat2
= $latitude2
* $PI
/ 180.0;
 

$radLng1
= $longitude1
* $PI
/ 180.0;
 

$radLng2
= $longitude2
* $PI
/180.0;
 

$a
= $radLat1
- $radLat2;
 

$b
= $radLng1
- $radLng2;
 

$distance
= 2
* asin(sqrt(pow(sin($a/2),2)
+ cos($radLat1)
* cos($radLat2)
* pow(sin($b/2),2)));
 

$distance
= $distance
* $EARTH_RADIUS
* 1000;
 

if($unit==2){
 

$distance
= $distance
/ 1000;
 

}
 

return
round($distance,
$decimal);

}

//
起点坐标

$longitude1
= 113.330405;

$latitude1
= 23.147255;

//
终点坐标

$longitude2
= 113.314271;

$latitude2
= 23.1323;

$distance
= getDistance($longitude1,
$latitude1,
$longitude2,
$latitude2,
1);

echo
$distance.'m';
// 2342.38m

$distance
= getDistance($longitude1,
$latitude1,
$longitude2,
$latitude2,
2);

echo
$distance.'km';
// 2.34km

?>
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: