【问题标题】:MKMapView Overlay in IOS6IOS6中的MKMapView覆盖
【发布时间】:2014-11-05 10:20:13
【问题描述】:

正在向 MKMapView 添加自定义叠加层,并且需要在添加叠加层之前清除地图内容(即,当缩放或平移时默认地图应该是不可见的) 类似于 IOS7 及更高版本中的“canReplaceMapContent”。

在IOS6中有什么方法可以执行这个动作吗?

提前致谢,

【问题讨论】:

    标签: ios xcode mkmapview mapkit mkoverlay


    【解决方案1】:

    你的方法如下:

    - (void) removeMapOverlay {
        [self.mapView removeOverlays:[self.mapView overlays]];
    
        NSMutableArray *tempArray = [NSMutableArray arrayWithArray:[self.mapView annotations]];
        if ([tempArray containsObject:[MKUserLocation class]]) {
            [tempArray removeObject:[MKUserLocation class]];
        }
    
        NSArray *annotationArray = [NSArray arrayWithArray:tempArray];
        tempArray = nil;
        [self.mapView removeAnnotations:annotationArray];
    }
    

    编辑:

    当您在地图中捏合/缩放或平移时。您可以使用两种委托方法来检查地图是否正在加载?

    - (void)mapViewWillStartLoadingMap:(MKMapView *)mapView {
        NSLog(@"loading...");
    }
    
    - (void)mapViewDidFinishLoadingMap:(MKMapView *)mapView {
        NSLog(@"Map loaded...");
    }
    

    我建议您使用以上两种方法。创建一个布尔变量或某些方法在缩放时不加载注释。如果有其他简单的方法,我将如何保持更新。

    【讨论】:

    • 感谢您的回复,但这会删除所有添加到 mkmapview 的自定义叠加层,但不会删除 mkmapview 中的地图
    • 如果你想从 MkMapView 中移除地图,那么你在哪里显示自定义叠加层?
    • 在 IOS7 中,如果我们使用此标志 (canReplaceMapContent) 在添加叠加层或缩放或平移时我们无法看到地图。我试图为 IOS6 实现这一目标,但无法计算。
    • @KrishnaChaitanyaBandaru 检查编辑答案。它可能会帮助你。如果有更简单的方法,我会编辑答案。
    • 我试过这个,但我仍然能够看到地图。似乎没有可能让 mkmapview 停止加载自己的图块
    【解决方案2】:

    您可以在 Apple 的地图上绘制一个自定义的不透明叠加层,但您仍然极有可能不时看到下方的地图。我推荐一个替代的开源工具集,您可以像Mapbox 一样控制它以实现完全控制。

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2015-04-08
      • 1970-01-01
      相关资源
      最近更新 更多