At this moment I am trying to find out if the coordinate is in MKMapView inside MKPolygon, drawn ahead of schedule with latitudes / longitudes.
I use CGPathContainsPoint to determine if the coordinate is inside the polygon on the map, but always returns false regardless of the coordinate I selected.
Can someone explain what exactly is going on? Below is my 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 }
source share