百度坐标点计算

这篇博客整理了关于百度坐标点计算的三个方法:1) 计算两个坐标点间的距离;2) 给定坐标点和最大距离,确定可能的坐标区域;3) 判断坐标点是否位于一个多边形内。实现这些功能的关键在于理解射线法,一种用于判断点与多边形位置关系的算法。
摘要由CSDN通过智能技术生成

前段时间因项目需求,用到了关于坐标点计算的几个方法,就在这里整理下:
1. 计算两个坐标点之间的距离
2. 已知一个坐标点和最大距离,求另一坐标可能在的坐标区域
3. 判断一个坐标点是否在一个多边形内

计算两个坐标点之间的距离

/**
 * 计算两个坐标之间的距离
 * @param $lat1 坐标点1的纬度
 * @param $lng1 坐标点1的经度
 * @param $lat2 坐标点2的纬度
 * @param $lng2 坐标点2的经度
 * @return float
 */
function GetDistance($lat1, $lng1, $lat2, $lng2){
   
    $PI = 3.1415926535898;
    $EARTH_RADIUS = 6378.137;
    $radLat1 = $lat1 * ($PI / 180);
    $radLat2 = $lat2 * ($PI / 180);

    $a = $radLat1 - $radLat2;
    $b = ($lng1 * ($PI / 180)) - ($lng2 * ($PI / 180));

    $s = 2 * asin(sqrt(pow(sin($a/2),2) + cos($radLat1)*cos($radLat2)*pow(sin($b/2),2)));
    return round($s * $EARTH_RADIUS * 1000);
}

已知一个坐标点和最大距离,求另一坐标可能在的坐标区域

/**
 * 已知一个坐标点和最大距离,求另一坐标的区域范围
 * @param $lng 经度
 * @param $lat 纬度
 * @param int $distance 距离
 * @return array
 */
function returnSquarePoint($lng,$lat,$distance = 1500){
   
    $earthRadius = 6371000;
    //deg2rad()将角度转换为相应的弧度
    //rad2deg()将弧度数转换为相应的角度数
    $dlng =  2 * asin(sin($distance / (2 * $earthRadius)) / cos(deg2rad($lat)));
    <
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值