2012-02-01 14 views

Respuesta

9

Utilice el mapa rects. Aquí hay un ejemplo usando el rect visible actual del mapa. Con respecto a su pregunta, puede usar convertRegion:toRectToView: para primero convertir su región a MKMapRect de antemano.

MKMapPoint userPoint = MKMapPointForCoordinate(mapView.userLocation.location.coordinate); 
MKMapRect mapRect = mapView.visibleMapRect; 
BOOL inside = MKMapRectContainsPoint(mapRect, userPoint); 
+0

¡Ja, gracioso para obtener una respuesta mucho más tarde! Gracias, una buena respuesta, así que seguiré adelante y te daré la marca: ConvertRegion: toRectToView es lo que me faltaba. –

0

Hay una solución simple para decidir si un punto está dentro de su área si el área está dada por un polígono usando el algoritmo de ray casting: Vea aquí http://en.wikipedia.org/wiki/Point_in_polygon

Como punto de partida utilizar un lugar garantizado para estar fuera su región, por ejemplo (geográfico) polo norte.

+0

que en realidad estaba buscando algo en MapKit que hacer el trabajo para mí! –

2

Swift 3 versión de respuesta firstresponder 's:

let userPoint = MKMapPointForCoordinate(mapView.userLocation.coordinate) 
let mapRect = mapView.visibleMapRect 
let inside = MKMapRectContainsPoint(mapRect, userPoint) 

Más o menos lo mismo. Esta API aún no se ha modificado rápidamente (es decir, se ha actualizado para cumplir con las directrices de diseño de la API Swift). Realmente debe ser ...

let userPoint = mapView.userLocation.coordinate.mapPoint 
let inside = mapView.visibleMapRect.contains(userPoint) 
Cuestiones relacionadas