经纬度计算--笔记

 FALSE,
//             'errno' => $errno,
//             'msg'   => $err,
//             'info'  => $info,
//         ];
//     }
//     curl_close($ch);
//     return [
//         'ret' => TRUE,
//         'msg' => $ret,
//     ];
// }
// die;
$point = returnSquarePoint(116.368904, 39.923423, 2);
var_dump($point);

$right_bottom_lat = $point['right_bottom']['lat'];
$left_top_lat     = $point['left_top']['lat'];     
$left_top_lng     = $point['left_top']['lng'];    
$right_bottom_lng = $point['right_bottom']['lng']; 

$lat = 39.922501;
$lng = 116.387271;
if ($lat > $right_bottom_lat && $lat < $left_top_lat && $lng > $left_top_lng && $lng < $right_bottom_lng ) {
	echo "success";
} else {
	echo "fail\n";
}

 // latitude>$right_bottom_lat AND latitude<$left_top_lat AND longitude>$left_top_lng AND longitude<$right_bottom_lng

/**
 * deg2rad() 函数将角度转换为弧度。
 * rad2deg() 函数把弧度数转换为角度数
 * asin() 函数返回不同数值的反正弦,返回的结果是介于 -PI/2 与 PI/2 之间的弧度值。
 * 计算某个经纬度的周围某段距离的正方形的四个点
 * @param lng float 经度
 * @param lat float 纬度
 * @param distance float 该点所在圆的半径,该圆与此正方形内切,默认值为0.5千米
 * @return array 正方形的四个点的经纬度坐标
 */
function returnSquarePoint($lng, $lat,$distance = 5)
{
	$earthdata=6371;//地球半径,平均半径为6371km
	$dlng = 2 * asin(sin($distance / (2 * $earthdata)) / cos(deg2rad($lat)));
	$dlng = rad2deg($dlng);
	$dlat = $distance/$earthdata;
	$dlat = rad2deg($dlat);
	$arr=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)
	);
	return $arr;
}

 

你可能感兴趣的:(其它,PHP)