博客
关于我
强烈建议你试试无所不能的chatGPT,快点击我
PHP根据传入的经纬度,和距离范围,返回所有在距离范围内的经纬度的取值范围...
阅读量:6253 次
发布时间:2019-06-22

本文共 1259 字,大约阅读时间需要 4 分钟。

/** * 根据传入的经纬度,和距离范围,返回所有在距离范围内的经纬度的取值范围 * @param float $lng 经度 * @param float $lat 纬度 * @param float $distance 距离(km) * @return array */function getSquarePoint($lng, $lat, $distance){    $earthRadius = 6371; //地球半径,km    $d_lng = 2 * asin(sin($distance / (2 * $earthRadius)) / cos(deg2rad($lat)));    $d_lng = rad2deg($d_lng);    $d_lat = $distance / $earthRadius;    $d_lat = rad2deg($d_lat);    return array(        'lng_start' => $lng - $d_lng,//经度开始        'lng_end' => $lng + $d_lng, //经度结束        'lat_start' => $lat - $d_lat,//纬度开始        'lat_end' => $lat + $d_lat,//纬度结束    );}

 

/** * 计算两个已知经纬度之间的距离 * @param float $lng1 经度1 * @param float $lat1 纬度1 * @param float $lng2 经度2 * @param float $lat2 纬度2 * @return float 距离(单位米) */function getPointDistance($lng1, $lat1, $lng2, $lat2){    $earthRadius = 6371; //地球平均半径,km    //deg2rad()函数将角度转为弧度    $radLat1 = deg2rad($lat1);    $radLat2 = deg2rad($lat2);    $radLng1 = deg2rad($lng1);    $radLng2 = deg2rad($lng2);    $d_lat = $radLat1 - $radLat2;    $d_lng = $radLng1 - $radLng2;    $distance = 2 * asin(sqrt(pow(sin($d_lat / 2), 2) + cos($radLat1) * cos($radLat2) * pow(sin($d_lng / 2), 2))) * $earthRadius * 1000;    return intval($distance / 1000);}

 

转载于:https://www.cnblogs.com/rxbook/p/10954062.html

你可能感兴趣的文章
dubbo Servlet Bridge Server时同时支持hessian和webservice
查看>>
lanmp一键安装包安装说明(包括lamp,lnmp,lnamp安装)
查看>>
Shell命令-文件及内容处理之head、tail
查看>>
Android碎碎念 -- 视频播放器
查看>>
关于51单片机“外部中断触发方式”的经验总结
查看>>
创建 floating IP - 每天5分钟玩转 OpenStack(106)
查看>>
创建个人博客 之 部署WordPress
查看>>
使用FTP批处理备份文件
查看>>
viewpager
查看>>
CSS3 box-sizing 让边框不占独立空间
查看>>
博科交换机的基本配置和级联配置
查看>>
平滑编译升级Nginx
查看>>
php 遍历多级菜单
查看>>
Aruba AC如何通过CLI备份及导入导出
查看>>
4、OC —— 构造方法
查看>>
我的友情链接
查看>>
java异常类总结
查看>>
SSH端口修改
查看>>
php归档函数(按时间)实现
查看>>
为什么colorbox要比fancybox强?
查看>>