我有一个带有一些自定义注释的MKMapView,当地图缩放时,这些注释看起来不太好。
当地图处于某个缩放级别时,是否可以只显示/添加它们?
答案 0 :(得分:4)
使用Marko的回答我来到了这个解决方案。
每次更改地区时,我都会更改ViewController's
属性isAtBigZoom
。
func mapView(mapView: MKMapView, regionDidChangeAnimated animated: Bool) {
isAtBigZoom = mapView.region.span.latitudeDelta < 0.01
}
然后在属性的didSet
,我执行此代码。
var isAtBigZoom = false {
didSet {
// this guard ensures, that the showing and hiding happens only once
guard oldValue != isAtBigZoom else {
return
}
// in my case I wanted to show/hide only a certain type of annotations
for case let annot as MapTextAnnotation in mapView.annotations {
mapView.viewForAnnotation(annot)?.alpha = isAtBigZoom ? 1 : 0
}
}
}
如果您还想从隐藏的注释开始,只需将alpha更改代码添加到viewForAnnotation
方法。
效果很好,我没有注意到性能方面的重大问题。虽然这可能会随着注释数量的增加而改变......
答案 1 :(得分:3)
您可以通过
获取地图缩放级别[map region];
MKMapView的属性。您还可以获得区域变更事件的通知 通过实现MKMapViewDelegate方法并设置委托
- (void)mapView:(MKMapView *)mapView regionDidChangeAnimated:(BOOL)animated
在这里,您可以查看当前的缩放级别。我不建议在缩放/平移时删除或添加所有注释,因为这可能会真正影响应用程序的性能。我还没有尝试在MKAnnotationView上将alpha设置为0.0或隐藏属性,但这可能是您最好的选择。