0

我环顾四周,看到提到了用于确定两个坐标(lat1,lng1)和(lat2,lng2)之间距离的半正弦公式。

我已经实现了这段代码:

    function haversineGreatCircleDistance(
  $latitudeFrom, $longitudeFrom, $latitudeTo, $longitudeTo, $earthRadius = 6371000)
{
  // convert from degrees to radians
  $latFrom = deg2rad($latitudeFrom);
  $lonFrom = deg2rad($longitudeFrom);
  $latTo = deg2rad($latitudeTo);
  $lonTo = deg2rad($longitudeTo);

  $latDelta = $latTo - $latFrom;
  $lonDelta = $lonTo - $lonFrom;

  $angle = 2 * asin(sqrt(pow(sin($latDelta / 2), 2) +
    cos($latFrom) * cos($latTo) * pow(sin($lonDelta / 2), 2)));
  return $angle * $earthRadius;
}

并试图确定:

1)这是返回什么单位?(目标是英尺)

2)这个方程写对了吗?

例如,这两点之间的距离应该是多少?

(32.8940695525,-96.7926336453)和(33.0642604502,-96.8064332754)?

我从上面的公式中得到 18968.0903312。

谢谢!

4

1 回答 1

3

1)这是返回什么单位?(目标是英尺)

无论您提供地球半径的单位是什么。

2)这个方程写对了吗?

测试一下。您可以将您的结果与现有的 Haversine 公式实现进行比较,例如这个

于 2013-02-28T16:28:30.283 回答