jak obliczyć odległość dwóch współrzędnych w celu c?

jak tytuł jak? Próbowałem kodu z Google Earth, ale wydaje się, że wynik jest inny w wyniku obliczeń mapy Google. poniżej podałem kod, który zrobiłem

-(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;
}

wartość EARTH_RADIUS wynosi 6378.138

korzystając z tej funkcji, pod warunkiem, że dwie współrzędne wypadną, wynik wynosi 4,5 kM, ale gdy korzystam z mapy google, uzyskaj kierunek między dwoma tymi samymi współrzędnymi, to pokazuje, że odległość wynosi około 8 km

czy ktoś może pomóc wskazać problem mojego kodu?

questionAnswers(5)

yourAnswerToTheQuestion