Как рассчитывается высота MKMapCamera?

Я регистрировал высоту камеры MKMapView при прокрутке вида и обнаружил странное поведение: высота точки обзора колеблется по мере прокрутки пользователем, хотя внешний вид уровня масштабирования карты остается прежним.

При ближайшем рассмотрении кажется, что высота уменьшается, когда пользователь прокручивает изображение на юг (к экватору), и снова увеличивается, когда пользователь проходит экватор. Я подумал, что это может иметь какое-то отношение к кривизне Земли и, возможно, связано с некоторыми знаниями тригонометрии или картографии, которых у меня нет.

Я пытаюсь эмулировать эту функцию. У меня есть CLLocationCoordinate2D и текущая высота и уровень масштабирования, и я хочу рассчитать правильную высоту для MKMapCamera.

Спасибо!


person Matt    schedule 19.02.2014    source источник


Ответы (1)


Я нашел ваш пост, когда задавал тот же вопрос. Затем я нашел этот пост:

Как определить правильную высоту для MKMapCamera, фокусирующейся на MKPolygon

Сконденсировав это в ответ на ваш вопрос (и мой):

    double distance = MKMetersBetweenMapPoints(MKMapPointForCoordinate(pinCenter.coordinate),
                                               MKMapPointForCoordinate(pinEye.coordinate));
    double altitude = distance / tan(M_PI*(15/180.0));

    MKMapCamera *camera = [MKMapCamera cameraLookingAtCenterCoordinate:pinCenter.coordinate
                                                     fromEyeCoordinate:pinEye.coordinate
                                                           eyeAltitude:altitude];
person smallwisdom    schedule 26.03.2014
comment
Что такое pinCenter и pinEye в вашем примере? - person RP-3; 22.11.2018