我有MKMapView
,我正在尝试旋转地图相机标题以跟随用户标题。我不想进行自动跟踪,因为它会强制缩放级别,这是我希望同时控制的内容。
问题是我发现如果提供354到6度之间的任何值,摄像机标题将恢复为0。例如,当我将摄像机标题设置为2时,它将在2和0之间不断反弹,直到我将手机转到另一个标题。
我的解决方案是在此范围之间将其锁定为0,但这不是最佳选择。有没有人知道为什么会这样?在标题更改时调用的方法如下所示:
- (void)setMapCameraPosition {
//354,6
if (self.heading <= 6 || self.heading >= 354) {
NSLog(@"****nulling heading. self.heading: %d camera.heading: %f", self.heading, self.mapView.camera.heading);
self.mapView.camera.heading = 0.0f;
}
else {
NSLog(@"changing heading. self.heading: %d camera.heading: %f", self.heading, self.mapView.camera.heading);
self.mapView.camera.heading = (double)self.heading;
}
}
如果我没有if语句并且只是将摄像机设置为我的标题,那么我的输出结果是:
self.heading: 357 camera.heading: -0.000000
self.heading: 357 camera.heading: -0.000000
self.heading: 357 camera.heading: -0.000000
因此,如果我将 close 的值提供给北方,它会在之后的一瞬间自动恢复到北方 - 使地图永远跳转。
如果没有地图删除我想要的标题,如何将标题设置为接近但实际上不是北方的程度?
答案 0 :(得分:5)
目前这个问题似乎无法解决。我也遇到了这个问题,我担心你需要使用Apple提供的技术支持。虽然我担心目前的SDK无法解决这个问题。此外,地图应用程序具有相同的行为。
在我的测试中,我发现对于&lt; 7 度和&gt;&gt; 353 度进行了捕捉。我使用滑块测试隔离应用中的MKMapCamera
标题功能,以创建可重现的问题。
所以你的解决方案现在是最好的。但是我不仅会拍摄零,还会拍摄353和7度。
float heading = self.heading;
if( roundf( heading ) >= round( 353.0f ) && roundf( heading ) < round( 356.5f ) ) {
heading = 353.0f;
} else if( roundf( heading ) >= round( 356.5f ) && roundf( heading ) <= round( 360.0f ) ) {
heading = 360.0f;
} else if( roundf( heading ) >= round( 0.0f ) && roundf( heading ) < round( 3.5f ) ) {
heading = 0.0f;
} else if( roundf( heading ) >= round( 3.5f ) && roundf( heading ) <= round( 7.0f ) ) {
heading = 7.0f;
}
[[[self mapview] camera] setHeading: heading];
但这完全取决于你。