Mam listę kilkuset miejscach i tylko chcesz wyświetlić MKPinAnnotation dla tych lokalizacjach aktualnie na ekranie. Ekran zaczyna aktualnej lokalizacji użytkownika o promieniu 2 mil. Oczywiście, użytkownik może przewijać i powiększać na ekranie. Teraz czekam na imprezę aktualizacji map, a następnie przez pętlę mojej liście lokalizacji i sprawdzić współrzędne jak to:
-(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 */
}
Więc pytam convertCoordinate gdzie punkt będzie na ekranie (chyba że źle zrozumieć tę metodę, która jest bardzo możliwe). Jeśli współrzędnych nie jest wyświetlane na ekranie, a następnie nigdy nie dodawać go do MapView.
Więc moje pytanie, czy jest to prawidłowy sposób ustalić, czy lat / long wydaje lokalizacja w bieżącym widoku i powinny być dodane do tej MapView? Czy powinienem to robić w inny sposób?













