用PHP计算纬度/经度GPS点周围的半径

时间:2015-11-13 15:52:58

标签: php mysql gps coordinates haversine

我正在尝试创建一个PHP脚本,当GPS设备(跟踪器)进入具有预定义位置的“地理围栏”时,该脚本可以执行某些操作。我发现的大部分帮助都使用了hasrsine公式,但大多数尝试从一个点获得最近的位置。我几乎需要相反的东西 设备和“围栏位置”坐标在MySQL数据库中,我能够成功地将它们拉出来。现在我需要设置围栏位置中心周围的半径,从那个点开始,任何方向都应该是10米 每当设备进入这个10米半径范围内时,PHP都会做一些事情 所以A点(lat,lon)周围有10米半径,设备B将其lat,lon发送到SQL数据库,每当A点和B点相距10米以内时,就会发生一些事情。 我从哪里开始?在我的情况下,是否有任何用途? 我认为PHP可以计算A和B的距离差异,只要该距离小于10米,PHP就可以做到。

我认为这可以胜任。

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

0 个答案:

没有答案