标签: mkmapcamera

iOS MapKit相机重置标题值在6到354之间

我有一个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;
    }
}
Run Code Online (Sandbox Code Playgroud)

如果我没有if语句并且只是将摄像机设置为我的标题,那么我的输出结果是:

self.heading: 357 camera.heading: -0.000000
self.heading: 357 camera.heading: -0.000000
self.heading: 357 camera.heading: -0.000000
Run Code Online (Sandbox Code Playgroud)

因此,如果我给出一个接近北方的值,那么接缝将会在一瞬间自动恢复到北方 - 使地图永远跳转.

如果没有地图删除我想要的标题,如何将标题设置为接近但实际上不是北方的程度?

mkmapview ios mkmapcamera

5
推荐指数
1
解决办法
1029
查看次数

使用 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,我无法使动画正常工作。

谢谢!

mkmapview ios mkmapcamera

5
推荐指数
1
解决办法
3161
查看次数

标签 统计

ios ×2

mkmapcamera ×2

mkmapview ×2