使用hasrsine在php中的两个坐标之间的距离

时间:2013-02-28 16:26:21

标签: distance haversine

我环顾四周,看到提到了半径公式来确定两个坐标(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。

谢谢!

1 个答案:

答案 0 :(得分:3)

  

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

您提供地球半径的任何单位。

  

2)这个等式是用正确的方式写的吗?

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