2013-08-13 13 views

Odpowiedz

5

Jak o tych dwóch metod z klasy MapKit:

1) Get widoczny prostokąt mapie przy użyciu:

@property(nonatomic, readonly) CGRect annotationVisibleRect 

http://developer.apple.com/library/ios/DOCUMENTATION/MapKit/Reference/MKMapView_Class/MKMapView/MKMapView.html#//apple_ref/occ/instp/MKMapView/annotationVisibleRect

2) Następnie dostać adnotacji NSSet od parametru mapy prostokątem:

- (NSSet *)annotationsInMapRect:(MKMapRect)mapRect 

http://developer.apple.com/library/ios/DOCUMENTATION/MapKit/Reference/MKMapView_Class/MKMapView/MKMapView.html#//apple_ref/occ/instm/MKMapView/annotationsInMapRect:

Więc chciałbym się spodziewać czegoś takiego:

-(void)getAnotationsInVisibleMapRectangle 
{ 
    NSSet *annotationSet = [myMapView annotationsInMapRect:myMapView.annotationVisibleRect]; 

    // print number of annotations 
    NSLog(@"Number of annotations in rect: %d", annotationSet.count); 

    // this will return an array from the NSSet 
    NSArray *annotationArray = [annotationSet allObjects]; 
} 

czy to pomaga?

+0

To miłe, ale trzeba konwertować CGRect (myMapView.annotationVisibleRect) do MKMapRect? "annotationInMapRect (MKMapRect)" ... – Nubaslon

+0

Dzięki! =) To mi pomogło) i używam "visibleMapRect" zamiast "annotationVisibleRect" – Nubaslon

+0

pomógł mi dużo .. dziękuję –

9

chodzi o szybkim 2,0, zwykle używać tego rozszerzenia MapView aby wszystkie aktualnie widocznych adnotacji jako tablica MKAnnotations:

extension MKMapView { 
    func visibleAnnotations() -> [MKAnnotation] { 
     return self.annotationsInMapRect(self.visibleMapRect).map { obj -> MKAnnotation in return obj as! MKAnnotation } 
    } 
} 
+0

niezwykle przydatne. –

+0

jeśli niektóre adnotacje znajdują się na krawędzi ekranu, to nie działa – vinbhai4u

+0

Dla tego konkretnego scenariusza można przekazać większy MapRect zamiast domyślnego visibleMapRect. –

Powiązane problemy