ios - 如何以特定缩放级别在 MKMapView 上显示 UILabel?

标签 ios objective-c mkmapview

我想在 map View 上显示一个标签,但该标签仅应在用户缩放到特定缩放级别时显示。所以我想执行以下操作:

if (mapView.camera.altitude >= 5) {
     //display label here
}

我喜欢它在用户每次缩放时检查并更新缩放级别。所以我认为 ViewDidAppear 将是这段代码的最佳位置。

提前致谢。

最佳答案

您应该通过下面的代码处理它。

-(void)mapView:(MKMapView *)mapView regionDidChangeAnimated:(BOOL)animated
{
    NSUInteger zoomLevel = MAXIMUM_ZOOM; // MAXIMUM_ZOOM is 20 with MapKit
    MKZoomScale zoomScale = mapView.visibleMapRect.size.width / mapView.frame.size.width; //MKZoomScale is just a CGFloat typedef
    double zoomExponent = log2(zoomScale);
    zoomLevel = (NSUInteger)(MAXIMUM_ZOOM - ceil(zoomExponent));
    if(zoomLevel > 5 && labelNotAdded)
    {
        //Add the label
    }
    else
    {
       //Remove the label
    }
}

关于ios - 如何以特定缩放级别在 MKMapView 上显示 UILabel?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/42082351/

相关文章:

c# - 如何在 Xamarin IOS 中将参数传递给事件处理程序

ios - 使容器 View 的 viewController 大于容器 View 的大小。可能的?

iphone - MKMapView 叠加层在 appDidBecomeActive 上重置

IOS如何将JSON字符串保存和加载到内存

iphone - 如何创建像UITableViewCell这样的TextField?

ios - 捕获 iOS 模拟器视频以进行应用程序预览

ios - 将 Obj-C 桥接到 Swift 之后缺少什么

iphone - 更改 VIewControllers 停止动画

ios - FBAnnotationClustering 以编程方式显示注释

iphone - 添加另一个时如何删除以前的注释图钉?