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

Mad*_*han 26 iphone objective-c

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

Vla*_*mir 57

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

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

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

  • Aneil,我怀疑你把'MKMapView`方法`viewForAnnotation`(在弗拉基米尔的例子中正确工作)与`MKMapViewDelegate`方法`mapView:viewForAnnotation:`(它创建注释,但你从不直接调用)混淆. (6认同)
  • ^不,它不会创建新的注释.原始解决方案是正确的 (5认同)

Cri*_*oso 5

在快速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")
                }
            }
        }
}
Run Code Online (Sandbox Code Playgroud)

  • 那真是太棒了兄弟。。它节省了我的时间。。 (2认同)