Ho una lista di diverse centinaia di località e voglio solo per visualizzare una MKPinAnnotation per quelle posizioni attualmente visualizzata sullo schermo. Lo schermo inizia con l'attuale posizione dell'utente con un raggio di 2 miglia. Naturalmente, l'utente può scorrere, e lo zoom sullo schermo. In questo momento, mi aspetto un evento di aggiornamento delle mappe, e poi scorrere la mia lista la posizione e controllare le coordinate di questo tipo:
-(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 */
}
Così mi chiedo convertCoordinate dove il punto sarebbe sullo schermo (a meno che non mi fraintendere questo metodo che è molto possibile). Se le coordinate non è sullo schermo, quindi non ho mai aggiungo al MapView.
Quindi la mia domanda, è questo il modo corretto per determinare se latitudine / longitudine sembrerebbe di una posizione nella vista corrente e deve essere aggiunto al il MapView? O dovrei fare questo in un modo diverso?













