当前位置:Gxlcms > 数据库问题 > PHP MYSQL 搜索周边坐标,并计算两个点之间的距离

PHP MYSQL 搜索周边坐标,并计算两个点之间的距离

时间:2021-07-01 10:21:17 帮助过:2人阅读

* * 获取周围坐标 * Enter description here ... * @param unknown_type $lng 固定坐标经度 * @param unknown_type $lat 固定坐标纬度 * @param unknown_type $distance 搜索周边距离,单位KM * @return multitype:multitype:number */ function returnSquarePoint($lng, $lat,$distance = 1){ $earthRadius = 6378.138; //地球半径,单位KM $dlng = 2 * asin(sin($distance / (2 * $earthRadius)) / cos(deg2rad($lat))); $dlng = rad2deg($dlng); $dlat = $distance/$earthRadius; $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‘]} "; } /** * 计算两个坐标的直线距离 * Enter description here ... * @param unknown_type $lat1 * @param unknown_type $lng1 * @param unknown_type $lat2 * @param unknown_type $lng2 */ function getDistance($lat1, $lng1, $lat2, $lng2){ $earthRadius = 6378.138; //近似地球半径千米 // 转换为弧度 $lat1 = ($lat1 * pi()) / 180; $lng1 = ($lng1 * pi()) / 180; $lat2 = ($lat2 * pi()) / 180; $lng2 = ($lng2 * pi()) / 180; // 使用半正矢公式 用尺规来计算 $calcLongitude = $lng2 - $lng1; $calcLatitude = $lat2 - $lat1; $stepOne = pow(sin($calcLatitude / 2), 2) + cos($lat1) * cos($lat2) * pow(sin($calcLongitude / 2), 2); $stepTwo = 2 * asin(min(1, sqrt($stepOne))); $calculatedDistance = $earthRadius * $stepTwo; return round($calculatedDistance); }

 

PHP MYSQL 搜索周边坐标,并计算两个点之间的距离

标签:

人气教程排行