PHP计算百度地图两个GPS坐标之间距离的方法
本文实例讲述了PHP计算百度地图两个GPS坐标之间距离的方法。分享给大家供大家参考。
具体实现方法如下:
/**
*计算两个坐标之间的距离(米)
*@paramfloat$fP1Lat起点(纬度)
*@paramfloat$fP1Lon起点(经度)
*@paramfloat$fP2Lat终点(纬度)
*@paramfloat$fP2Lon终点(经度)
*@returnint
*/
functiondistanceBetween($fP1Lat,$fP1Lon,$fP2Lat,$fP2Lon){
$fEARTH_RADIUS=6378137;
//角度换算成弧度
$fRadLon1=deg2rad($fP1Lon);
$fRadLon2=deg2rad($fP2Lon);
$fRadLat1=deg2rad($fP1Lat);
$fRadLat2=deg2rad($fP2Lat);
//计算经纬度的差值
$fD1=abs($fRadLat1-$fRadLat2);
$fD2=abs($fRadLon1-$fRadLon2);
//距离计算
$fP=pow(sin($fD1/2),2)+
cos($fRadLat1)*cos($fRadLat2)*pow(sin($fD2/2),2);
returnintval($fEARTH_RADIUS*2*asin(sqrt($fP))+0.5);
}
/**
*百度坐标系转换成标准GPS坐系
*@paramfloat$lnglat坐标(如:106.426,29.553404)
*@returnstring转换后的标准GPS值:
*/
functionBD09LLtoWGS84($fLng,$fLat){//经度,纬度
$lnglat=explode(',',$lnglat);
list($x,$y)=$lnglat;
$Baidu_Server="http://api.map.baidu.com/ag/coord/convert?from=0&to=4&x={$x}&y={$y}";
$result=@file_get_contents($Baidu_Server);
$json=json_decode($result);
if($json->error==0){
$bx=base64_decode($json->x);
$by=base64_decode($json->y);
$GPS_x=2*$x-$bx;
$GPS_y=2*$y-$by;
return$GPS_x.','.$GPS_y;//经度,纬度
}else
return$lnglat;
}
希望本文所述对大家的php程序设计有所帮助。