Определение средней точки между двумя координатами

Я пытаюсь определить среднюю точку между двумя местоположениями в MKMapView. ]. Я следую методу, описанному здесьздесь) и переписал его на Objective-C, но центр карты находится где-то к северо-востоку от Баффинова острова, что далеко от двух точки.

Мой метод основан на Java-методе, указанном выше:

+(CLLocationCoordinate2D)findCenterPoint:(CLLocationCoordinate2D)_lo1 :(CLLocationCoordinate2D)_loc2 {
    CLLocationCoordinate2D center;

    double lon1 = _lo1.longitude * M_PI / 180;
    double lon2 = _loc2.longitude * M_PI / 100;

    double lat1 = _lo1.latitude * M_PI / 180;
    double lat2 = _loc2.latitude * M_PI / 100;

    double dLon = lon2 - lon1;

    double x = cos(lat2) * cos(dLon);
    double y = cos(lat2) * sin(dLon);

    double lat3 = atan2( sin(lat1) + sin(lat2), sqrt((cos(lat1) + x) * (cos(lat1) + x) + y * y) );
    double lon3 = lon1 + atan2(y, cos(lat1) + x);

    center.latitude  = lat3 * 180 / M_PI;
    center.longitude = lon3 * 180 / M_PI;

    return center;
}

2 параметра имеют следующие данные:

_loc1:
    latitude = 45.4959839
    longitude = -73.67826455

_loc2:
    latitude = 45.482889
    longitude = -73.57522299

Вышеуказанные параметры правильно размещены на карте (в Монреале и его окрестностях). Я пытаюсь центрировать карту посередине между 2, но мой метод возвращает следующее:

latitude = 65.29055
longitude = -82.55425

где-то в Арктике, когда он должен быть примерно в 500 милях к югу.

22
задан JPritchard9518 21 April 2019 в 05:07
поделиться