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

Calculate distance between GPS points by coordinates

我在通过坐标计算两个 GPS 点之间的距离时遇到了一些问题。

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

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

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

但是,使用 this, I can measure a distance of 2.8 km

等工具在地图上定位这些点

我也尝试了其他几个公式 return 大约 4 公里的结果。

知道我会遗漏什么吗?

我认为是因为您使用的是以英里为单位的功能,以公里为单位,您可以使用类似的东西:

    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;
    }

正如 Roland Starke 在评论中指出的那样,问题出在坐标的顺序上。 (7, 47 不是 47, 7)