我无法通过两个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公里的结果。
有什么主意我会错过的吗?
答案 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)