使用MKMapCamera的最佳方法是什么?

时间:2014-12-19 09:06:33

标签: ios mkmapview mkmapcamera

我找到了三种使用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,我无法使动画生效。

谢谢!

2 个答案:

答案 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