通过坐标计算GPS点之间的距离

时间:2019-09-18 08:26:06

标签: php gps coordinates distance haversine

我无法通过两个GPS点的坐标来计算它们的距离。

point a
x = 7,2562
y = 47,7434599999999

point b 
x = 7,21978
y = 47,73836

我使用here中所述的Haversine公式。我得到的结果是4.09公里。

但是,使用this之类的工具在地图上定位这些点,我可以测量2.8 km的距离

我尝试过的其他几个公式也返回了约4公里的结果。

有什么主意我会错过的吗?

2 个答案:

答案 0 :(得分:0)

我认为这是因为u以英里为单位使用该功能,在Kms中,您可以使用以下方式:

    public static function distance(
        array $from,
        array $to
    ) {
        if (empty($from['lat']) || empty($to['lat'])) {
            return $to['distance'];
        }

        $latitude1  = (float) $from['lat'];
        $latitude2  = (float) $to['lat'];
        $longitude1 = (float) $from['lng'];
        $longitude2 = (float) $to['lng'];

        $theta = $longitude1 - $longitude2;
        $distance = (sin(deg2rad($latitude1)) * sin(deg2rad($latitude2)))
            + (cos(deg2rad($latitude1)) * cos(deg2rad($latitude2)) * cos(deg2rad($theta)))
        ;
        $distance = acos($distance);
        $distance = rad2deg($distance);
        $distance = $distance * 60 * 1.1515;
        $distance = (is_nan($distance)) ? 0 : $distance * 1.609344;

        return  $distance;
    }

答案 1 :(得分:0)

正如罗兰·斯塔克(Roland Starke)在评论中指出的那样,问题在于坐标的顺序。 (7,47不是47,7)