2011-01-17 33 views

Trả lời

54

Bạn có thể truy cập vào các chú thích bản đồ bằng cách sử dụng tài sản annotations của nó. Có thể không nhận được lượt xem cho tất cả các chú thích vì chú thích hiện không hiển thị trên bản đồ có thể không có lượt xem nào được liên kết với chúng, nhưng đối với chú thích tùy ý, bạn có thể thử xem bằng phương thức -viewForAnnotation:.

Vì vậy, đây làm thế nào bạn có thể lặp qua chú thích tất cả của bản đồ và cố gắng truy cập vào quan điểm của họ:

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

này sẽ tạo ra một bộ mới của MKAnnotationViews - không trả lại những cái hiện có trên bản đồ của bạn. –

+4

^Không, nó sẽ không tạo chú thích mới. Giải pháp gốc là chính xác. – n13

+5

Aneil, tôi nghi ngờ bạn đang bối rối phương thức 'viewMap 'của' MKMapView' (hoạt động chính xác trong ví dụ của Vladimir) với phương thức 'MKMapViewDelegate'' mapView: viewForAnnotation: '(tạo chú thích, nhưng bạn không bao giờ gọi trực tiếp). – Rob

3

Trong nhanh chóng 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") 
       } 
      } 
     } 
} 
+1

Đó là một điều đáng sợ. . nó đã tiết kiệm thời gian của tôi. . –

Các vấn đề liên quan