在setVisibleMapRect上保留地图视图相机间距(3d角度)

时间:2015-05-20 17:37:29

标签: ios objective-c mkmapview mapkit

我正在尝试将我的地图视图聚焦在特定区域上,但这样的方式是它不会破坏当前的摄像机(视角)。当我拨打setVisibleMapRect时,相机始终会重置并且视图完全自上而下。

有没有办法保留地图的摄像机角度,或在调用setVisibleMapRect后恢复它?我似乎无法让这件事起作用我的尝试。要清楚,我显然不希望完全相同的相机,因为然后调用setVisibleMapRect将毫无意义,但我想保持相机的“相对角度”,同时仍然缩放根据给定的可见地图矩阵输入或输出。

我甚至尝试使用一些三角函数计算基于角度的高度,但我似乎无法通过在调用setVisibleRect后立即设置相机来使其正常工作。我猜他们不打算一起使用。

尝试使用自定义相机的setVisibleRect是个坏主意吗?我应该试着找出适当的值来设置相机吗?这很棘手,因为相机属性不直观,并且在使用非零摄像机角度时,似乎没有任何方便的辅助方法可以聚焦在地图上的特定区域或矩形上。任何指针都会受到赞赏。

2 个答案:

答案 0 :(得分:2)

您可以使用MKMapCamera来控制音高和高度。您可以在更改矩形之前读取摄像机的设置,然后在设置新的矩形后再次设置它们。以下是设置相机的方法:

        //create camera object
        MKMapCamera *newCamera=[[MKMapCamera alloc] init];

        //set a new camera angle
        [newCamera setCenterCoordinate:CLLocationCoordinate2DMake(lat,lon)];
        [newCamera setPitch:60.0];
        [newCamera setAltitude:100.0];
        [mapView setCamera:newCamera animated:YES];

答案 1 :(得分:0)

解决此问题的最简单方法是,在 setVisibleRect 之后立即设置间距。 即,

mapView.setVisibleMapRect(yourRect, edgePadding: yourPadding, animated: true)
mapView.camera.pitch = 45