Я пытаюсь создать сценарий PHP, который может что-то делать, когда устройство GPS (трекер) входит в «геозону» с предопределенным положением. В большинстве найденных мной подсказок используется формула гаверсинуса, но большинство из них пытается определить ближайшее местоположение из точки. Мне в значительной степени нужно обратное.
Координаты устройства и "местоположения забора" находятся в базе данных MySQL, я могу извлечь их успешно. Теперь мне нужно установить радиус вокруг центра расположения забора, который должен составлять 10 метров в любом направлении от этой точки.
Всякий раз, когда устройство входит в этот радиус 10 метров, PHP что-то делает.
Итак, точка A (широта, lon) имеет радиус 10 м вокруг него, устройство B отправляет свои широты и долготы в базу данных 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;
}
if (dist($A, $B) < 10) { do_something(); }
- person Marc B   schedule 13.11.2015