• 设为首页
  • 点击收藏
  • 手机版
    手机扫一扫访问
    迪恩网络手机版
  • 关注官方公众号
    微信扫一扫关注
    迪恩网络公众号

PHP根据传入的经纬度,和距离范围,返回所有在距离范围内的经纬度的取值范围 ...

原作者: [db:作者] 来自: [db:来源] 收藏 邀请
/**
 * 根据传入的经纬度,和距离范围,返回所有在距离范围内的经纬度的取值范围
 * @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);
}

 


鲜花

握手

雷人

路过

鸡蛋
该文章已有0人参与评论

请发表评论

全部评论

专题导读
上一篇:
PHP学习笔记之PDO发布时间:2022-07-10
下一篇:
PHP编程技巧发布时间:2022-07-10
热门推荐
阅读排行榜

扫描微信二维码

查看手机版网站

随时了解更新最新资讯

139-2527-9053

在线客服(服务时间 9:00~18:00)

在线QQ客服
地址:深圳市南山区西丽大学城创智工业园
电邮:jeky_zhao#qq.com
移动电话:139-2527-9053

Powered by 互联科技 X3.4© 2001-2213 极客世界.|Sitemap