很多项目开发中都会用到百度地图接口,那么如何通过计算两个坐标的距离,也是针对百度地图接口开发的典型应用。本文通过百度地图开发之距离计算的实例分享,来帮助大家熟悉百度地图的开发。
具体实现方法如下:
/**
* 计算两个坐标之间的距离(米)
* @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腾讯地图经纬度转百度地图经纬度的实现思路与示例分享
react框架遇上百度地图怎么办?
html5地理定位与第三方工具百度地图的应用
以上就是php百度地图开发之距离计算的实例分享的详细内容。