获取当前位置三公里内最大、最小经纬度
/**
* 查一定范围内的经纬度值
* 传入值:纬度 经度 查半径(m)
* 返回值:最小纬度、经度,最大纬度、经度
*/
public function getAround($lat,$lon,$raidus)
{
$PI = 3.14159265; // 圆周率
$EARTH_RADIUS = 6378137; // 地球半径
$RAD = Math.PI / 180.0; // 弧度
$latitude = $lat;
$longitude = $lon;
$degree = (24901*1609)/360.0;
$raidusMile = $raidus;
$dpmLat = 1/$degree;
$radiusLat = $dpmLat*$raidusMile;
$minLat = $latitude - $radiusLat;
$maxLat = $latitude + $radiusLat;
$mpdLng = $degree*cos($latitude * ($PI/180));
$dpmLng = 1 / $mpdLng;
$radiusLng = $dpmLng*$raidusMile;
$minLng = $longitude - $radiusLng;
$maxLng = $longitude + $radiusLng;
$result['minwei']=$minLat;
$result['minjing']=$minLng;
$result['maxwei']=$maxLat;
$result['maxjing']=$maxLng;
return $result;
}
通过经纬度取得实际地址
百度api
/**
* 通过经纬度取得实际地址
*/
public function getRealyAddress($wei,$jing)
php实例计算器教学视频 {
$place_url='api.map.baidu/geocoder?output=json&location='.$wei.','.$jing.'&key=ccea36ece20a7a6eb0666bc726957e85';
$json_place=file_get_contents($place_url);
$place_arr=json_decode($json_place,true);
$address=$place_arr['result']['formatted_address'];
return $address;
}
获取两个经纬度坐标的距离 和 直角距离
function rad($d)
{
return $d * 3.1415926535898 / 180.0;
}
// 本函数为获取两坐标之间的距离
// a纬度 a经度 b纬度 b经度
function GetDistance($lat1, $lng1, $lat2, $lng2)
{
$EARTH_RADIUS = 6378.137;
$radLat1 = rad($lat1);
$radLat2 = rad($lat2);
$a = $radLat1 - $radLat2;
$b = rad($lng1) - 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;
}
// 本函数为获取两左边之间的直角距离
function GetDestinationDistance($lat1, $lng1, $lat2, $lng2)
{
$d = GetDistance($lng1, $lat1, $lng1, $lat2) + GetDistance($lng1, $lat1, $lng2, $lat1);
return $d;
}
版权声明:本站内容均来自互联网,仅供演示用,请勿用于商业和其他非法用途。如果侵犯了您的权益请与我们联系QQ:729038198,我们将在24小时内删除。
发表评论