In diesem Moment versuche ich herauszufinden, ob eine Koordinate auf einem MKMapView innerhalb eines MKPolygon ist, das vorher mit Breiten-/Längengraden gezeichnet wurde.Bestimmen, ob sich der Breiten-/Längengrad in MapView in einem MKPolygon befindet?
Ich benutze CGPathContainsPoint, um zu bestimmen, ob eine Koordinate innerhalb des Polygons auf der Karte ist, aber es gibt immer falsch zurück, unabhängig von der Koordinate, die ich auswähle.
Kann mir bitte jemand erklären, was genau falsch läuft? Unten ist mein Code in Swift.
class ViewController: UIViewController, MKMapViewDelegate
@IBOutlet weak var mapView: MKMapView!
let initialLocation = CLLocation(latitude: 43.656734, longitude: -79.381576)
let point = CGPointMake(43.656734, -79.381576)
let regionRadius: CLLocationDistance = 500
let point1 = CLLocationCoordinate2D(latitude: 43.656734, longitude: -79.381576)
var points = [CLLocationCoordinate2DMake(43.655782, -79.382094),
CLLocationCoordinate2DMake(43.657499, -79.382310),
CLLocationCoordinate2DMake(43.656656, -79.380497),
CLLocationCoordinate2DMake(43.655782, -79.382094)]
override func viewDidLoad() {
super.viewDidLoad()
centerMapOnLocation(initialLocation)
let polygon = MKPolygon(coordinates: &points, count: points.count)
mapView.addOverlay(polygon)
var annotation = MKPointAnnotation()
annotation.coordinate = point1
annotation.title = "Test"
annotation.subtitle = "Test"
mapView.addAnnotation(annotation)
self.mapView.delegate = self
}
func centerMapOnLocation(location: CLLocation) {
let coordinateRegion = MKCoordinateRegionMakeWithDistance(location.coordinate, regionRadius * 2.0, regionRadius * 2.0)
mapView.setRegion(coordinateRegion, animated: true)
}
func mapView(mapView: MKMapView!, rendererForOverlay overlay: MKOverlay!) -> MKOverlayRenderer! {
if overlay is MKPolygon {
let polygonView = MKPolygonRenderer(overlay: overlay)
polygonView.strokeColor = UIColor.redColor()
if CGPathContainsPoint(polygonView.path, nil, CGPointMake(43.656734, -79.381576), true) {
print("True!!!!!")
} else {
println("False")
}
return polygonView
}
return nil
}
hey würden Sie nicht "false" verwenden (den Wickel Stil Pfad zu bekommen) .. letztes Argument zu CGPathContainsPoint. – Fattie
Ich habe versucht sowohl wahr als auch falsch, aber ohne Erfolg. :( –