检查lat,lng在哪一侧到另一个lat,lng在地图上

时间:2014-01-31 13:48:21

标签: php jquery google-maps

我有一张地图,其中我采用了西南和东北边界,并使用它来获取它们之间的位置。

由于日期行,有时边界不会像解释here那样出现。

所以我想到了:

  

将东北纬度与西南方向相比较,   如果它在右侧它的罚款,但如果它在左侧,我必须   做点什么。

所以要知道这一面,我计算了轴承(连接这些SW和NE点的直线与垂直线之间的角度)。因此,如果轴承介于0-90之间,或者不是。

但问题是:

enter image description here

  

这里的顶点符合lat和lng的东北地区   积极的:78.52379,158.70952

  

最低点符合拉特和伦敦的西南部资格   否定:-32.1087,-150.3139

地图仍试图以反方向连接点(可能是尝试最小距离)并将方位设为 342 ,我将其视为不合适的点并尝试反转其中的1个:(

看起来这是计算轴承的预期方法,如果有的话有办法解决/达到我想要的效果吗?

修改

function _getBearing($lat1, $lon1, $lat2, $lon2) {
        //difference in longitudinal coordinates
        $dLon = deg2rad($lon2) - deg2rad($lon1);

        //difference in the phi of latitudinal coordinates
        $dPhi = log(tan(deg2rad($lat2) / 2 + pi() / 4) / tan(deg2rad($lat1) / 2 + pi() / 4));

        //we need to recalculate $dLon if it is greater than pi
        if(abs($dLon) > pi()) {
            if($dLon > 0) {
                $dLon = (2 * pi() - $dLon) * -1;
            }
            else {
                $dLon = 2 * pi() + $dLon;
            }
        }
        //return the angle, normalized
        return (rad2deg(atan2($dLon, $dPhi)) + 360) % 360;
    }

0 个答案:

没有答案