MKMapKit 隐藏苹果地图

Posted

技术标签:

【中文标题】MKMapKit 隐藏苹果地图【英文标题】:MKMapKit hide Apple maps 【发布时间】:2014-03-20 06:37:48 【问题描述】:

在苹果 MapKit 方面需要一些帮助。 我正在使用带有 Tile Overlay 的 OSM 地图,效果非常好。 但是有一个小问题我想解决。我想隐藏苹果地图,因为它们在 OSM 地图下渲染,当 OSM 地图加载时,苹果地图是可见的,看起来很奇怪。

另外,设备正在渲染两个不好的地图……你知道的。

在指南中,我用来添加 OSM 地图的是这段代码:

if ( [map.subviews count] && [((UIView *)[map.subviews objectAtIndex:0]).subviews count] )
    ((UIView *)[((UIView *)[map.subviews objectAtIndex:0]).subviews objectAtIndex:0]).alpha = 0;

首先,这段代码对我不起作用。无论如何将 alpha 设置为 nil 并不等于不渲染。但是如果没有办法停止渲染 Apple 地图,我可以使用 alpha。

所以在这方面需要一些帮助,需要隐藏苹果地图。

非常感谢您的宝贵时间。

更新:

我试图记录 MKMapKit 结构。 这里是:

- MKMapView
- - UIView
- - - MKBasicMapView
- - - - _MKMapLayerHostingView
- - - MKScrollContainerView
- - - - MKOverlayContainerView
- - - MKNewAnnotationContainerView
- - MKAttributionLabel

然后我尝试了这个东西:

UIView * ll = [[[[[[map subviews] objectAtIndex: 0] subviews] objectAtIndex: 0] subviews] objectAtIndex: 0];
[ll removeFromSuperview];

它有效,但它隐藏了带有叠加层的地图。不知道如何仅隐藏地图... 正如我们所见,有叠加层,为什么地狱......哦......请帮忙。 =(

【问题讨论】:

你为什么首先使用 OSM 而不是单独使用 MapKit?如果你使用 OSM,为什么还需要 MapKit? 您有指向包含该代码的“指南”的链接吗?依赖内部的、未记录的视图层次结构(尤其是 MKMapView)通常是一个非常糟糕的主意 2Anna:我同意你的观点,但我必须这样做 =( 我不想把 mapkit 换成别的东西……太痛苦了。 2Thomas:因为我不想编写自己的 mapkit 或使用 3rd 方 mapkit。 @KaronatoR,写“2xyz”不会通知用户 xyz——改写“@xyz”。 【参考方案1】:

ios 7 及更高版本上,您可能会查看 http://mapbox.com/mbxmapkit。但无论如何,您不应该混淆MKMapView 子视图层次结构。

【讨论】:

以上是关于MKMapKit 隐藏苹果地图的主要内容,如果未能解决你的问题,请参考以下文章

ios之苹果和百度地图的使用

ios 苹果和百度地图的相关使用

隐藏地图图钉注释图像

苹果高德地图无法登录使用代理软件

苹果地图后退导航

苹果地图显示名称