Wie berechnet man den Abstand von zwei Koordinaten in Objektiv c?

als titel wie geht das? Ich habe den Code von Google Earth ausprobiert, aber es scheint, als ob das Ergebnis vom Ergebnis der Google Map-Berechnung abweicht. unten angegeben den Code, den ich tat

-(double)GetDistance:(double)lat1 long1:(double)lng1 la2:(double)lat2 long2:(double)lng2 {
    //NSLog(@"latitude 1:%.7f,longitude1:%.7f,latitude2:%.7f,longtitude2:%.7f",lat1,lng1,lat2,lng2);
    double radLat1 = [self rad:lat1];
    double radLat2 = [self rad:lat2];
    double a = radLat1 - radLat2;
    double b = [self rad:lng1] -[self rad:lng2];
    double s = 2 * asin(sqrt(pow(sin(a/2),2) + cos(radLat1)*cos(radLat2)*pow(sin(b/2),2)));
    s = s * EARTH_RADIUS;
    s = round(s * 10000) / 10000;
    return s;
}

-(double)rad:(double)d
{
    return d *3.14159265 / 180.0;
}

Der EARTH_RADIUS-Wert ist 6378.138

Wenn Sie diese Funktion verwenden, indem Sie zwei Koordinaten angeben, wird ein Ergebnis von 4,5 km angezeigt. Wenn Sie jedoch Google Map verwenden, erhalten Sie die Richtung zwischen zwei gleichen Koordinaten. Die Entfernung beträgt ungefähr 8 km

Kann mir jemand helfen, auf das Problem meines Codes hinzuweisen?

Antworten auf die Frage(5)

Ihre Antwort auf die Frage