当视图滚动时,我一直在记录MKMapView
相机的高度,我发现了一个奇怪的行为:视觉的高度随着用户滚动而波动,尽管地图的外观是缩放级别保持不变。
仔细观察后,当用户向南(向赤道方向)滚动时,高度似乎会降低,一旦用户经过赤道,海拔就会再次增加。我认为它可能与地球的曲率有关,可能涉及一些我没有的三角学或制图学知识。
我试图模仿这个功能。我有CLLocationCoordinate2D
和当前的海拔高度和缩放级别,我想计算MKMapCamera
的正确高度。
谢谢!
答案 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];