我找到了三种使用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];内存方面,nr 3似乎是最好的,还是它是一个单例类?在大多数示例中,它们使用nr1。
对于nr3,我不能让动画工作。
谢谢!
发布于 2014-12-19 18:42:23
使用MKMapCamera,您可以设置地图的方向,而不会干扰视图上的转换,甚至不会检测到用户的方向。
MKMapCamera *mapCamera = [[self.mvMap camera] copy];
[mapCamera setHeading:headingDegrees];
[self.mvMap setCamera:mapCamera animated:YES];如果你不想要动画,你可以只在现有的相机上设置新的标题:
[self.mapView.camera setHeading:heading];发布于 2021-03-09 05:16:12
Swift 5中的更新答案
下面的代码在我没有调用setCamera的情况下可以正常工作
let mapCamera = self.mapView.camera
mapCamera.heading = headingInDegrees
mapCamera.centerCoordinate = newCoordinate你也可以像这样在现有的摄像机上设置新的标题:
self.mapView.camera.heading = headingInDegreeshttps://stackoverflow.com/questions/27562690
复制相似问题