Tengo una lista de cientos de ubicaciones y solo deseo mostrar una MKPinAnnotation para esas ubicaciones actualmente en la pantalla. La pantalla comienza con la ubicación actual del usuario con un radio de 2 millas. Por supuesto, el usuario puede desplazarse y hacer zoom en la pantalla. En este momento, espero un evento de actualización del mapa, y luego recorro mi lista de ubicaciones y verifico las coordenadas de esta manera:
-(void)mapViewDidFinishLoadingMap:(MKMapView *)mapView {
CGPoint point;
CLLocationCoordinate2D coordinate;
. . .
/* in location loop */
coordinate.latitude = [nextLocation getLatitude];
coordinate.longitude = [nextLocation getLongitude];
/* Determine if point is in view. Is there a better way then this? */
point = [mapView convertCoordinate:coordinate toPointToView:nil];
if( (point.x > 0) && (point.y>0) ) {
/* Add coordinate to array that is later added to mapView */
}
Así que le pregunto a convertCoordinate dónde estaría el punto en la pantalla (a menos que malinterprete este método, que es muy posible). Si la coordenada no está en la pantalla, nunca la agregue a mapView.
Entonces mi pregunta, ¿es esta la forma correcta de determinar si el latitud / longitud de una ubicación aparecería en la vista actual y debería agregarse a la vista de mapa? ¿O debería estar haciendo esto de otra manera?













