Почему MKMetersBetweenMapPoints дает мне разные результаты, когда я меняю параметры?

Я на самом деле пытаюсь рассчитать расстояние между точкой max и min в координатах x и y для MKMapPoints.

Для этого я делаю это (максимальное расстояние по оси y):

MKMapPoint test1, test2;
double dist;
test1.x = 0.0;
test1.y = 0.0;
test2.x = 0.0;
test2.y = MKMapSizeWorld.height;
dist = MKMetersBetweenMapPoints(test2, test1);
NSLog(@"Distance %f",dist);

Я получаю 18997878.291251 в консоли. Но когда я изменяю расчет расстояний на:

dist = MKMetersBetweenMapPoints(test1, test2);

Я получаю 18873651.664238, поэтому я не понимаю, в чем разница. Я даже не знаю, правильно ли я делаю, чтобы получить максимальные значения расстояния по осям x и y.

Любая помощь будет оценена.

Ответ 1

Я предполагаю, что это проблема алгоритма. Некоторое приближение, которое останавливается, когда достигается определенная точность. Вот почему нет коммутации. Вы можете попробовать пример кода, чтобы получить расстояние между двумя точками на карте, не используя MKMapPoints:

- (float) distanceToLPU {

        useDelegate

        CLLocationCoordinate2D pointACoordinate = appDelegate.usrLoc;
        CLLocation *pointALocation = [[CLLocation alloc] initWithLatitude:pointACoordinate.latitude longitude:pointACoordinate.longitude];

        CLLocationCoordinate2D pointBCoordinate;
        pointBCoordinate.latitude = [self.latitude doubleValue];
        pointBCoordinate.longitude = [self.longitude doubleValue];

        CLLocation *pointBLocation = [[CLLocation alloc] initWithLatitude:pointBCoordinate.latitude longitude:pointBCoordinate.longitude];  

        float distanceMeters = [pointALocation distanceFromLocation:pointBLocation];  

        [pointALocation release];
        [pointBLocation release];  

        NSString *dist = [NSString stringWithFormat:@" (%.0f м)", distanceMeters];
        NSLog(@"Distance to this LPU:%@", dist);

        return distanceMeters;
    }