2014-02-19 2 views
4

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

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

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

Спасибо!

ответ

4

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

How to determine the correct altitude for an MKMapCamera focusing on an 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]; 
Смежные вопросы