Измерение расстояния между двумя координатами в PHP
Привет, у меня есть необходимость рассчитать расстояние между двумя точками, имеющими широту и длину.
Я хотел бы избежать любого вызова внешнего API.
Я попытался реализовать формулу Haversine в PHP:
Вот код:
<code>class CoordDistance { public $lat_a = 0; public $lon_a = 0; public $lat_b = 0; public $lon_b = 0; public $measure_unit = 'kilometers'; public $measure_state = false; public $measure = 0; public $error = ''; public function DistAB() { $delta_lat = $this->lat_b - $this->lat_a ; $delta_lon = $this->lon_b - $this->lon_a ; $earth_radius = 6372.795477598; $alpha = $delta_lat/2; $beta = $delta_lon/2; $a = sin(deg2rad($alpha)) * sin(deg2rad($alpha)) + cos(deg2rad($this->lat_a)) * cos(deg2rad($this->lat_b)) * sin(deg2rad($beta)) * sin(deg2rad($beta)) ; $c = asin(min(1, sqrt($a))); $distance = 2*$earth_radius * $c; $distance = round($distance, 4); $this->measure = $distance; } } </code>
Тестирование его с некоторыми заданными точками, которые имеют публичные расстояния, не дает надежного результата.
Я не понимаю, есть ли ошибка в исходной формуле или в моей реализации