我们可以从MKMapView获取所有注释视图

时间:2011-01-17 08:56:53

标签: iphone objective-c

是否有关于如何从MKMapView获取所有注释的直接方法或任何建议?

2 个答案:

答案 0 :(得分:57)

您可以使用其annotations属性访问地图的注释。获取所有注释的视图可能并不总是可能,因为地图上当前不可见的注释可能没有与之关联的视图,但对于任意注释,您可以尝试使用-viewForAnnotation:方法获取视图。

所以在这里你可以迭代所有地图的注释并尝试访问他们的观点:

for (id<MKAnnotation> annotation in mapView.annotations){
    MKAnnotationView* anView = [mapView viewForAnnotation: annotation];
    if (anView){
       // Process annotation view
       ...
    }
}

答案 1 :(得分:5)

在swift 3中。

func mapView(_ mapView: MKMapView, didSelect view: MKAnnotationView) {

    let selectedAnnotation = view.annotation

        for annotation in mapView.annotations {
            let viewI = mapView.view(for: annotation)

            if !(viewI?.annotation is MKUserLocation){
                if annotation.isEqual(selectedAnnotation) {
                    viewI?.image = UIImage(named: "focus.png")
                    showLifeEventView(anotation: view) //did select a point on Map.
                }else{
                    viewI?.image = UIImage(named: "point.png")
                }
            }
        }
}