2013-04-26 9 views

Antwort

29

Der schnellste Weg ist die integrierten Apple-Funktionen zu verwenden, die diese Art der Sache machen super schnell!

if(MKMapRectContainsPoint(mapView.visibleMapRect, MKMapPointForCoordinate(coordinate))) 
{ 
    //Do stuff 
} 

Wo Koordinate ist Ihre CLLocation2D.

Dies ist viel schneller als Koordinaten if-Anweisung mit einer Masse ausarbeitet. Grund ist, dass Apple einen Quadtree verwendet und schnelle Suchvorgänge für Sie durchführen kann.

2

Swift 3 kompatibel

Wenn Sie häufig mit Karten arbeiten Ich schlage vor, Sie eine Erweiterung wie diese zu erstellen:

extension MKMapView { 

    func contains(coordinate: CLLocationCoordinate2D) -> Bool { 
     return MKMapRectContainsPoint(self.visibleMapRect, MKMapPointForCoordinate(coordinate)) 
    } 

} 

Dann können Sie verwenden, wo immer, zum Beispiel:

func mapView(_ mapView: MKMapView, regionDidChangeAnimated animated: Bool) { 
    if mapView.contains(coordinate: mapView.centerCoordinate) { 
     // do stuff 
    } 
} 

Auf diese Weise halten Sie den Code:

  • mehr wartbar: in einem einzigen Punkt, wenn Apple entscheidet, seine Rahmenbedingungen ändern Sie können
  • mehr prüfbar
  • besser lesbar und sauber
Wechselcode eine schnelle Umgestalten tun