使用 MKMapCamera 的最佳方式是什么

Sjo*_*ors 5 mkmapview ios mkmapcamera

我找到了三种使用 MKMapCamera 的方法,我想知道哪一种是最值得推荐的。我的目标是跟随用户,我想在每次位置更新时更新相机(所以每秒)。

1.

            MKMapCamera *newCamera = [MKMapCamera camera];
            [newCamera setCenterCoordinate:newCoordinate];
            [newCamera setPitch:60];
            [newCamera setHeading:heading];
            [newCamera setAltitude:eyeAltitude];
            [mapView setCamera:newCamera];
Run Code Online (Sandbox Code Playgroud)

2.

            MKMapCamera *newCamera = [MKMapCamera cameraLookingAtCenterCoordinate:newCoordinate
                                                             fromEyeCoordinate:oldCoordinate
                                                                   eyeAltitude:eyeAltitude];
            [newCamera setPitch:pitch];

            [mapView setCamera:newCamera];
Run Code Online (Sandbox Code Playgroud)

3.

            MKMapCamera *oldCamera = mapView.camera;
            [oldCamera setCenterCoordinate:newCoordinate];
            [oldCamera setPitch:60];
            [oldCamera setHeading:heading];
            [oldCamera setAltitude:eyeAltitude];
Run Code Online (Sandbox Code Playgroud)

Memory wise 似乎 nr 3 是最体面的,还是单例类?在大多数示例中,它们使用 nr1。

对于 nr3,我无法使动画正常工作。

谢谢!

小智 4

使用 MKMapCamera,您可以设置地图的方向,而不会干扰视图上的变换,甚至不会检测 user\xe2\x80\x99s 标题。

\n\n
MKMapCamera *mapCamera = [[self.mvMap camera] copy];\n[mapCamera setHeading:headingDegrees]; \n[self.mvMap setCamera:mapCamera animated:YES];\n
Run Code Online (Sandbox Code Playgroud)\n\n

如果您不\xe2\x80\x99 不需要动画,您可以在现有相机上设置新标题:

\n\n
[self.mapView.camera setHeading:heading];\n
Run Code Online (Sandbox Code Playgroud)\n