欢迎光临
我们一直在努力

php附近的人 计算两个经纬度地点之间的距离

[php]
define(EARTH_RADIUS, 6371);//地球半径,平均半径为6371km
/**
*计算某个经纬度的周围某段距离的正方形的四个点
*
*@param lng float 经度
*@param lat float 纬度
*@param distance float 该点所在圆的半径,该圆与此正方形内切,默认值为0.5千米
*@return array 正方形的四个点的经纬度坐标
*/
function returnSquarePoint($lng, $lat,$distance = 0.5){

$dlng = 2 * asin(sin($distance / (2 * EARTH_RADIUS)) / cos(deg2rad($lat)));
$dlng = rad2deg($dlng);

$dlat = $distance/EARTH_RADIUS;
$dlat = rad2deg($dlat);

return array(
‘left-top’=>array(‘lat’=>$lat + $dlat,’lng’=>$lng-$dlng),
‘right-top’=>array(‘lat’=>$lat + $dlat, ‘lng’=>$lng + $dlng),
‘left-bottom’=>array(‘lat’=>$lat – $dlat, ‘lng’=>$lng – $dlng),
‘right-bottom’=>array(‘lat’=>$lat – $dlat, ‘lng’=>$lng + $dlng)
);
}
//使用此函数计算得到结果后,带入sql查询。
$squares = returnSquarePoint($lng, $lat);
$info_sql = "select id,locateinfo,lat,lng from `lbs_info` where lat<>0 and lat>{$squares[‘right-bottom’][‘lat’]} and lat<{$squares[‘left-top’][‘lat’]} and lng>{$squares[‘left-top’][‘lng’]} and lng<{$squares[‘right-bottom’][‘lng’]} ";
[/php]

PHP计算两个经纬度地点之间的距离
功能:根据圆周率和地球半径系数与两点坐标的经纬度,计算两点之间的球面距离。
[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

[/php]

赞(0) 打赏
未经允许不得转载:程序开发爱好者 » php附近的人 计算两个经纬度地点之间的距离
分享到: 更多 (0)

网站设计及开发、微应用及微网站开发、微信公众平台开发、 HTML5手机网站开发、网络整合营销、APP开发、软件开发及企业电商服务

联系我们