【发布时间】:2014-11-05 10:20:13
【问题描述】:
正在向 MKMapView 添加自定义叠加层,并且需要在添加叠加层之前清除地图内容(即,当缩放或平移时默认地图应该是不可见的) 类似于 IOS7 及更高版本中的“canReplaceMapContent”。
在IOS6中有什么方法可以执行这个动作吗?
提前致谢,
【问题讨论】:
标签: ios xcode mkmapview mapkit mkoverlay
正在向 MKMapView 添加自定义叠加层,并且需要在添加叠加层之前清除地图内容(即,当缩放或平移时默认地图应该是不可见的) 类似于 IOS7 及更高版本中的“canReplaceMapContent”。
在IOS6中有什么方法可以执行这个动作吗?
提前致谢,
【问题讨论】:
标签: ios xcode mkmapview mapkit mkoverlay
你的方法如下:
- (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...");
}
我建议您使用以上两种方法。创建一个布尔变量或某些方法在缩放时不加载注释。如果有其他简单的方法,我将如何保持更新。
【讨论】:
您可以在 Apple 的地图上绘制一个自定义的不透明叠加层,但您仍然极有可能不时看到下方的地图。我推荐一个替代的开源工具集,您可以像Mapbox 一样控制它以实现完全控制。
【讨论】: