PHP根据一个给定经纬度的点,进行附近地点查询
发布时间:2020-05-25 06:58:21 所属栏目:PHP 来源:互联网
导读:PHP根据一个给定经纬度的点,进行附近地点查询
|
下面是脚本之家 jb51.cc 通过网络收集整理的代码片段。 脚本之家小编现在分享给大家,也给大家做个参考。 实现原理先算出该点周围的矩形的四个点,然后使用经纬度去直接匹配数据库中的记录。 //获取周围坐标
public function returnSquarePoint($lng,$lat,$distance = 0.5){
$earthRadius = 6378138;
$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)
);
}
//计算两个坐标的直线距离
public function getDistance($lat1,$lng1,$lat2,$lng2){
$earthRadius = 6378138; //近似地球半径米
// 转换为弧度
$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);
}
以上是脚本之家(jb51.cc)为你收集整理的全部代码内容,希望文章能够帮你解决所遇到的程序开发问题。 如果觉得脚本之家网站内容还不错,欢迎将脚本之家网站推荐给程序员好友。 (编辑:安卓应用网) 【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容! |
