PHP计算百度地图两个GPS坐标之间距离的方法
程序员文章站
2022-10-04 17:57:36
本文实例讲述了php计算百度地图两个gps坐标之间距离的方法。分享给大家供大家参考。
具体实现方法如下:
复制代码 代码如下:/**
* 计算两个坐标之间...
本文实例讲述了php计算百度地图两个gps坐标之间距离的方法。分享给大家供大家参考。
具体实现方法如下:
复制代码 代码如下:
/**
* 计算两个坐标之间的距离(米)
* @param float $fp1lat 起点(纬度)
* @param float $fp1lon 起点(经度)
* @param float $fp2lat 终点(纬度)
* @param float $fp2lon 终点(经度)
* @return int
*/
function distancebetween($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);
return intval($fearth_radius * 2 * asin(sqrt($fp)) + 0.5);
}
/**
* 百度坐标系转换成标准gps坐系
* @param float $lnglat 坐标(如:106.426, 29.553404)
* @return string 转换后的标准gps值:
*/
function bd09lltowgs84($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;
}
* 计算两个坐标之间的距离(米)
* @param float $fp1lat 起点(纬度)
* @param float $fp1lon 起点(经度)
* @param float $fp2lat 终点(纬度)
* @param float $fp2lon 终点(经度)
* @return int
*/
function distancebetween($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);
return intval($fearth_radius * 2 * asin(sqrt($fp)) + 0.5);
}
/**
* 百度坐标系转换成标准gps坐系
* @param float $lnglat 坐标(如:106.426, 29.553404)
* @return string 转换后的标准gps值:
*/
function bd09lltowgs84($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程序设计有所帮助。
上一篇: Hibernate学习笔记
下一篇: rabbitmq实现延时队列(死信队列)