J'ai une liste de plusieurs centaines d'emplacements et ne veux afficher un MKPinAnnotation pour les emplacements actuellement à l'écran. L'écran commence par l'emplacement actuel de l'utilisateur avec un rayon de 2 mile. Bien sûr, l'utilisateur peut faire défiler et zoomer à l'écran. En ce moment, j'attends un événement de mise à jour de la carte, puis boucle dans ma liste d'emplacement, et vérifier les coordonnées comme celui-ci:
-(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 */
}
Je demande donc convertCoordinate où le point serait à l'écran (à moins que je comprends mal cette méthode qui est très possible). Si la coordonnée est pas à l'écran, je ne l'ajoute à la Mapview.
Donc, ma question, est-ce la bonne façon de déterminer si un emplacement de latitude / longitude apparaît dans la vue actuelle et devrait être ajoutée au Mapview du? Ou devrais-je faire cela d'une manière différente?













