Am o listă de câteva sute de locații și doriți doar să afișeze o MKPinAnnotation pentru acele locații în prezent pe ecran. Ecranul începe cu locația utilizatorului curent, cu o rază de 2 mile. Desigur, utilizatorul poate derula și zoom pe ecran. Chiar acum, am așteptați pentru un eveniment hartă actualizare, apoi bucla prin lista mea de locație, și verificați coordonatele ca aceasta:
-(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 */
}
Deci, eu cer convertCoordinate în cazul în care punctul ar fi pe ecran (dacă nu înțeleg greșit această metodă, care este foarte posibil). În cazul în care nu este de coordonate pe ecran, atunci eu nu-l adăugați la mapView.
Deci, întrebarea mea, este aceasta modul corect de a determina dacă lat / lung ar apărea o locație în vizualizarea curentă și ar trebui să fie adăugate la The mapView? Sau ar trebui să fac acest lucru într-un mod diferit?













