Messen des Abstands zwischen zwei Koordinaten in PHP

Hallo, ich habe die Notwendigkeit, den Abstand zwischen zwei Punkten mit dem Lat und Long zu berechnen.

Ich möchte jeden Aufruf einer externen API vermeiden.

Ich habe versucht, die Haversine-Formel in PHP zu implementieren:

Hier ist der Code:

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

Wenn ich es mit bestimmten Punkten teste, die öffentliche Entfernungen haben, erhalte ich kein verlässliches Ergebnis.

Ich verstehe nicht, ob es einen Fehler in der ursprünglichen Formel oder in meiner Implementierung gibt

Antworten auf die Frage(11)

Ihre Antwort auf die Frage