Простая php функция для расчета расстояния между двумя заданными gps координатами. На входе задаем координаты — ширину и долготу первой точки и ширину и долготу второй точки, на выходе получаем дистанцию в метрах.
/**
* функция расчета дистанции между GPS координатами
* @param $latitudeFrom
* @param $longitudeFrom
* @param $latitudeTo
* @param $longitudeTo
* @param int $earthRadius
* @return float
*/
public static function getDistance( $latitudeFrom, $longitudeFrom, $latitudeTo, $longitudeTo, $earthRadius = 6371000 )
{
// convert from degrees to radians
$latFrom = deg2rad($latitudeFrom);
$lonFrom = deg2rad($longitudeFrom);
$latTo = deg2rad($latitudeTo);
$lonTo = deg2rad($longitudeTo);
$lonDelta = $lonTo - $lonFrom;
$a = pow(cos($latTo) * sin($lonDelta), 2) +
pow(cos($latFrom) * sin($latTo) - sin($latFrom) * cos($latTo) * cos($lonDelta), 2);
$b = sin($latFrom) * sin($latTo) + cos($latFrom) * cos($latTo) * cos($lonDelta);
$angle = atan2(sqrt($a), $b);
return round( $angle * $earthRadius );
}
Пример использования — getDistance( ‘55.0148244’, ‘82.9486818’, ‘55.0143146’, ‘82.9480416’ ); // 70 метров