Простая 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 метров