我找到了三种使用MKMapCamera的方法,我想知道哪一种是最推荐的方式。我的目标是跟随用户,我想在每个位置更新时更新相机(所以每秒钟)。
1
MKMapCamera *newCamera = [MKMapCamera camera];
[newCamera setCenterCoordinate:newCoordinate];
[newCamera setPitch:60];
[newCamera setHeading:heading];
[newCamera setAltitude:eyeAltitude];
[mapView setCamera:newCamera];
2
MKMapCamera *newCamera = [MKMapCamera cameraLookingAtCenterCoordinate:newCoordinate
fromEyeCoordinate:oldCoordinate
eyeAltitude:eyeAltitude];
[newCamera setPitch:pitch];
[mapView setCamera:newCamera];
3
MKMapCamera *oldCamera = mapView.camera;
[oldCamera setCenterCoordinate:newCoordinate];
[oldCamera setPitch:60];
[oldCamera setHeading:heading];
[oldCamera setAltitude:eyeAltitude];
记忆明智似乎是最体面的3或者是单身人士? 在大多数示例中,他们使用nr1。
对于nr3,我无法使动画生效。
谢谢!
答案 0 :(得分:4)
使用MKMapCamera,您可以设置地图的方向,而不会弄乱视图上的变换甚至检测用户的标题。
MKMapCamera *mapCamera = [[self.mvMap camera] copy];
[mapCamera setHeading:headingDegrees];
[self.mvMap setCamera:mapCamera animated:YES];
如果您不想要动画,可以在现有相机上设置新标题:
[self.mapView.camera setHeading:heading];
答案 1 :(得分:0)
在 Swift 5 中更新了答案
以下代码对我有用,无需调用 setCamera
let mapCamera = self.mapView.camera
mapCamera.heading = headingInDegrees
mapCamera.centerCoordinate = newCoordinate
您也可以像这样在现有相机上设置新标题:
self.mapView.camera.heading = headingInDegrees