PHP根据经纬度坐标计算距离
在有些应用中需要用到计算距离的功能,例如附近的商家、离我最近等功能。
W为纬度对应的弧度,J为经度对应的弧度,如上图所示
下面代码lat是纬度lng是经度
看类代码/**
*根据经纬度算距离,返回结果单位是公里,先纬度,后经度
*@param$lat1
*@param$lng1
*@param$lat2
*@param$lng2
*@returnfloat|int
*/
publicfunctionGetDistance($lat1,$lng1,$lat2,$lng2)
{
$EARTH_RADIUS=6378.137;
$radLat1=$this->rad($lat1);
$radLat2=$this->rad($lat2);
$a=$radLat1-$radLat2;
$b=$this->rad($lng1)-$this->rad($lng2);
$s=2*asin(sqrt(pow(sin($a/2),2)+cos($radLat1)*cos($radLat2)*pow(sin($b/2),2)));
$s=$s*$EARTH_RADIUS;
$s=round($s*10000)/10000;
return$s;
}
privatefunctionrad($d)
{
return$d*M_PI/180.0;
}