MKMapCamera的海拔高度如何计算?

Mat*_*att 4 iphone mapkit mkmapview ios

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

仔细检查后,似乎随着用户向南滚动(向着赤道),海拔降低,一旦用户经过赤道,海拔又再次升高。我认为这可能与地球曲率有关,并且可能涉及一些我没有的三角学或制图学知识。

我正在尝试模拟此功能。我有一个CLLocationCoordinate2D和当前高度和缩放级别,我想计算的正确高度MKMapCamera

谢谢!

小智 5

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

如何为专注于MKPolygon的MKMapCamera确定正确的高度

将其概括为您的问题(和我的问题)的答案:

    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];
Run Code Online (Sandbox Code Playgroud)