本文實例講述了php實現(xiàn)計算百度地圖坐標(biāo)之間距離的方法。分享給大家供大家參考,具體如下:
下面是網(wǎng)上的代碼,使用的時候需要進(jìn)行些許修改
第一個函數(shù)是獲得范圍,參數(shù)為緯度經(jīng)度半徑
第二個函數(shù)是計算坐標(biāo)距離
<?php
define('PI',3.1415926535898);
define('EARTH_RADIUS',6378.137);
//計算范圍,可以做搜索用戶
function GetRange($lat,$lon,$raidus){
//計算緯度
$degree = (24901 * 1609) / 360.0;
$dpmLat = 1 / $degree;
$radiusLat = $dpmLat * $raidus;
$minLat = $lat - $radiusLat; //得到最小緯度
$maxLat = $lat + $radiusLat; //得到最大緯度
//計算經(jīng)度
$mpdLng = $degree * cos($lat * (PI / 180));
$dpmLng = 1 / $mpdLng;
$radiusLng = $dpmLng * $raidus;
$minLng = $lon - $radiusLng; //得到最小經(jīng)度
$maxLng = $lon + $radiusLng; //得到最大經(jīng)度
//范圍
$range = array(
'minLat' => $minLat,
'maxLat' => $maxLat,
'minLon' => $minLng,
'maxLon' => $maxLng
);
return $range;
}
//獲取2點之間的距離
function GetDistance($lat1, $lng1, $lat2, $lng2){
$radLat1 = $lat1 * (PI / 180);
$radLat2 = $lat2 * (PI / 180);
$a = $radLat1 - $radLat2;
$b = ($lng1 * (PI / 180)) - ($lng2 * (PI / 180));
$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;
}
希望本文所述對大家PHP程序設(shè)計有所幫助。