如何计算MKMapCamera的海拔高度?

时间:2014-02-19 20:41:32

标签: ios iphone mkmapview mapkit

当视图滚动时,我一直在记录MKMapView相机的高度,我发现了一个奇怪的行为:视觉的高度随着用户滚动而波动,尽管地图的外观是缩放级别保持不变。

仔细观察后,当用户向南(向赤道方向)滚动时,高度似乎会降低,一旦用户经过赤道,海拔就会再次增加。我认为它可能与地球的曲率有关,可能涉及一些我没有的三角学或制图学知识。

我试图模仿这个功能。我有CLLocationCoordinate2D和当前的海拔高度和缩放级别,我想计算MKMapCamera的正确高度。

谢谢!

1 个答案:

答案 0 :(得分:5)

我在问同样的问题时找到了你的帖子。然后我找到了这篇文章:

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];