【问题标题】:How to remove or hide background in MKMapView when using custom tiles使用自定义图块时如何在 MKMapView 中删除或隐藏背景
【发布时间】:2013-09-09 16:09:13
【问题描述】:

尝试了很多方法后,我仍然没有找到一种好的且完全可靠的方法来防止通常的“地图”显示在我正在使用的自定义地图图块后面。最终,我希望我的应用拥有一个仅包含自定义地图的地图页面。

我真的在寻找一个纯 iOS 的解决方案,不需要任何 3rd 方软件,但看起来很困难。

我已经尝试了 3 种方法:

第一,通过它的视图隐藏背景地图:

NSArray *views = [[[self.mapView subviews] objectAtIndex:0] subviews];
[[views objectAtIndex:0] setHidden:YES];
  • 但是,这不适用于即将推出的某个新操作系统!整个画面一片空白。 Apple 开发者论坛也没有提供解决方案

第二个,使用另一个空白叠加层(例如 MKCircle)来覆盖背景图。但是,当快速滚动或缩小时,这会起作用,有时叠加层会闪烁,您可以短暂看到后面的背景地图,因此并不理想。

数字 3,这就是我这几天一直在做的事情,只是为了防止用户缩小。大多数记录在案的方法倾向于使用 regionDidChangeAnimated 或 regionWillChangeAnimated,但是这些方法似乎不会在捏合时突然停止地图缩小 - 它们会等到捏合动作完成后再生效,因此这意味着可以短暂查看背景地图。

所以现在我被难住了,除非我当然错过了其他两种方法。

所以任何帮助将不胜感激!

【问题讨论】:

    标签: objective-c mkmapview mapkit tiles custom-overlay


    【解决方案1】:

    添加这个:

    -(void)viewDidAppear:(BOOL)animated    
    {    
        MKTileOverlay *overlay = [[MKTileOverlay alloc] init];//        initWithURLTemplate:tileTemplate];    
        overlay.canReplaceMapContent = YES;    
        [map addOverlay:overlay];    
        overlay = nil;
    }
    
    -(void)loadTileAtPath:(MKTileOverlayPath)path result:(void (^)(NSData *, NSError *))result    
    {    
        NSData *tile =nil;    
    }
    
    -(MKOverlayRenderer *)mapView:(MKMapView *)mapView  rendererForOverlay: (id<MKOverlay>)overlay    
    {
        if ([overlay isKindOfClass:[MKTileOverlay class]])
        {
            MKTileOverlayRenderer *renderer = [[MKTileOverlayRenderer alloc]  initWithOverlay:overlay];    
            [renderer setAlpha:0.5];
            return renderer;
        }
    }
    

    它将替换背景中的地图内容。在我在整个地图上添加叠加层并向用户隐藏真实地图的情况下,它的效果非常好。

    【讨论】:

      【解决方案2】:

      如果没有像 MapBox 这样的第三方库,您无法在当前版本中执行此操作。但是,您所说的未来操作系统版本允许您执行此操作。

      【讨论】:

        猜你喜欢
        • 2021-09-30
        • 2016-01-22
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 2022-11-13
        • 1970-01-01
        相关资源
        最近更新 更多