Ich muss überprüfen, ob der Benutzerstandort zu der MKCoordinateRegion gehört. Ich war überrascht, keine einfache Funktion dafür zu finden, etwas wie: CGRectContainsCGPoint (rect, Punkt).Wie kann überprüft werden, ob MKCoordinateRegion CLLocationCoordinate2D enthält, ohne MKMapView zu verwenden?
fand ich folgendes Stück Code:
CLLocationCoordinate2D topLeftCoordinate =
CLLocationCoordinate2DMake(region.center.latitude
+ (region.span.latitudeDelta/2.0),
region.center.longitude
- (region.span.longitudeDelta/2.0));
CLLocationCoordinate2D bottomRightCoordinate =
CLLocationCoordinate2DMake(region.center.latitude
- (region.span.latitudeDelta/2.0),
region.center.longitude
+ (region.span.longitudeDelta/2.0));
if (location.latitude < topLeftCoordinate.latitude || location.latitude > bottomRightCoordinate.latitude || location.longitude < bottomRightCoordinate.longitude || location.longitude > bottomRightCoordinate.longitude) {
// Coordinate fits into the region
}
Aber ich bin nicht sicher, ob es als Dokumentation genau ist nicht genau angeben, wie die Region Rechteck berechnet wird.
Es muss einen einfacheren Weg geben, es zu tun. Habe ich eine Funktion in der MapKit Framework-Dokumentation übersehen?
Ich bezweifle, dass das funktionieren würde: 1. warum sollte location.latitude> = northWestCorner.latitude? Sollte es nicht so gut sein? 2. Was passiert, wenn die berechnete minimale Länge -2.0, die maximale Länge 2.0 und Ihre Position.longitude 359.0 ist? – lichen19853
@ lichen19853 ist richtig, dass es bei einem Test um 360 Grad fehlschlagen wird. Siehe meine Antwort unten für eine etwas korrektere Lösung. – MarekR