ios - 在 setVisibleMapRect 上保留 map View 相机间距(3d 角度)

标签 ios objective-c mkmapview mapkit

我正在尝试将我的 map View 聚焦在特定区域,但不会破坏当前相机(视角)。当我调用 setVisibleMapRect 时,相机总是会重置并且 View 会完全自上而下。

有什么方法可以保留 map 的相机角度,或者在调用 setVisibleMapRect 后恢复它?我似乎无法让它发挥作用,无论我尝试什么。需要明确的是,我显然不想要完全相同的相机,因为那样调用setVisibleMapRect 将毫无意义,但我想保持相机的“相对角度”同时仍然根据给定的可见 map 矩形放大或缩小。

我什至尝试使用一些三角函数根据角度计算高度,但我似乎无法通过在调用 setVisibleRect 后立即设置相机来使其正常工作>。我猜它们不适合一起使用。

尝试将 setVisibleRect 与自定义相机一起使用是个坏主意吗?我应该试着找出适当的值来设置相机吗?这很棘手,因为相机属性不直观,并且似乎没有任何方便的辅助方法来聚焦特定区域或在使用非零相机角度时在 map 上调整。任何指针将不胜感激。

最佳答案

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

        //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];

关于ios - 在 setVisibleMapRect 上保留 map View 相机间距(3d 角度),我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/30356672/

相关文章:

ios - MkMapView 取消加载谷歌磁贴

ios - MKMapCamera 的高度是如何计算的?

ios - 如何在 NSManagedObject iOS 上进行嵌套排序

ios - 如何在 iOS 4 应用程序中添加 facetime?

android - 如何更改App签名?

iphone - Zbar SDK 和 ios7/xcode 5 - 应用程序的 CPU 使用率达到 100%,内存超过 100MB

ios - 如何使用 couchbase 在 Swift 4 中通过数据库观察器检索数据?

ios - 进入viewController后如何加载数据?

objective-c - 无 GUI 应用程序包

iphone - 如何声明一个 MKPolygon