Ich habe eine Liste von mehreren hundert Standorten und will nur eine MKPinAnnotation für diese Orte auf dem Bildschirm zur Zeit angezeigt werden soll. Der Bildschirm beginnt mit dem aktuellen Standort des Benutzers mit einem 2 Meile Radius. Natürlich kann der Benutzer blättern, und auf dem Bildschirm vergrößern oder verkleinern. Gerade jetzt, ich warte auf ein Karten-Update-Ereignis, und dann die Schleife durch meine Ortsliste, und überprüfen Sie die Koordinaten wie folgt aus:
-(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 */
}
So frage ich convertCoordinate, wo der Punkt auf dem Bildschirm sein würde (es sei denn, ich diese Methode falsch verstehen, die sehr gut möglich ist). Wenn das nicht auf dem Bildschirm koordinieren ist, dann füge ich es nie auf die mapView.
Also meine Frage, ist dies der richtige Weg, um zu bestimmen, ob ein Standort der lat / long in der aktuellen Ansicht erscheinen würde und soll den den mapView hinzugefügt werden? Oder sollte ich dies auf eine andere Weise tun?













