2011-12-30 9 views
7

? He notado que si uso selectAnnotation:animated: de MKMapView, que desplazará mi mapa de la pantalla si la MKAnnotation no se muestra en la actual MKCoordinateRegion que muestra mi mapa.¿Cómo verifica si hay una MKAnnotation disponible dentro de una MKCoordinateRegion

¿Hay alguna manera trivial de comprobar si una anotación se encuentra actualmente en la pantalla dentro de la MKCoordinateRegion especificada? Me gustaría poder seleccionar una anotación que esté solo en la pantalla y no fuera de la pantalla.

Respuesta

24

Utilice el método annotationsInMapRect: en la clase MKMapView. Devuelve NSSet de todos los objetos de anotación visibles en el mapa dado rect. Use el método containsObject: de NSSet para probar si la anotación está presente en ese conjunto de anotaciones visibles.

MKMapRect visibleMapRect = aMapView.visibleMapRect; 
NSSet *visibleAnnotations = [aMapView annotationsInMapRect:visibleMapRect]; 
BOOL annotationIsVisible = [visibleAnnotations containsObject:someAnnotation]; 

También visibleMapRect es igual que la región, sino simplemente una forma diferente de la representación. Tomar de la documentación,

visibleMapRect

El área actualmente mostrada por la vista del mapa.

@property(nonatomic) MKMapRect visibleMapRect

Esta propiedad representa la misma información básica como la propiedad región, pero especifica como un mapa rectángulo en lugar de una región.

+0

¿Esta cuenta tiene anotaciones personalizadas que son más grandes que el MKAnnotationView estándar? Lo que quiero decir es que puede ser visible, pero puede ser algo fuera de pantalla. –

+1

¡Dónde está el botón Plus 100! Gracias. – DogCoffee

Cuestiones relacionadas