我有一个MKMapView,我试图旋转地图相机的标题,以跟踪用户的标题。我不想做自动跟踪,因为它强制一个变焦水平,这是我想要控制在同一时间。
事情是,我已经发现,相机的航向将恢复到0,如果提供的值在354到6度之间。例如,当我将相机的标题设置为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因此,如果我给出一个接近北方的值,它会在一秒钟后自动恢复到北--使地图永远跳转。
如果没有地图移除我想要的航向,我怎样才能将航向设置到接近但实际上并不是北方的程度?
发布于 2014-11-05 11:13:38
目前,这个问题似乎无法解决。我也遇到了这个问题,恐怕你需要使用苹果公司的技术支持。尽管我担心答案将是,在目前的SDK中,这是不可能的。此外,Maps应用程序具有相同的行为。
在我的测试中,我发现<7度和>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];但这完全取决于你。
https://stackoverflow.com/questions/26339496
复制相似问题