Ermitteln, ob sich ein Punkt innerhalb einer MKPolygon-Überlagerung befindet

Ich möchte in der Lage sein zu erkennen, ob das Tippen innerhalb eines MKPolygons liegt.

Ich habe ein MKPolygon:

<code>CLLocationCoordinate2D  points[4];

points[0] = CLLocationCoordinate2DMake(41.000512, -109.050116);
points[1] = CLLocationCoordinate2DMake(41.002371, -102.052066);
points[2] = CLLocationCoordinate2DMake(36.993076, -102.041981);
points[3] = CLLocationCoordinate2DMake(36.99892, -109.045267);

MKPolygon* poly = [MKPolygon polygonWithCoordinates:points count:4];

[self.mapView addOverlay:poly];  

//create UIGestureRecognizer to detect a tap
UITapGestureRecognizer *tapRecognizer = [[UITapGestureRecognizer alloc] initWithTarget:self action:@selector(foundTap:)];
tapRecognizer.numberOfTapsRequired = 1;
tapRecognizer.numberOfTouchesRequired = 1;
[self.mapView addGestureRecognizer:tapRecognizer];
</code>

Es ist nur eine Grundskizze des Staates Colorado.

Ich habe die Umrechnung von Tap auf Lat / Long eingerichtet:

<code>-(IBAction)foundTap:(UITapGestureRecognizer *)recognizer
{
    CGPoint point = [recognizer locationInView:self.mapView];

    CLLocationCoordinate2D tapPoint = [self.mapView convertPoint:point toCoordinateFromView:self.view];
}
</code>

Ich bin mir jedoch nicht sicher, wie ich technisieren soll, wenn mein Abgriffspunkt innerhalb des MKPolygons liegt. Es scheint keine Methode zu geben, mit der diese Prüfung durchgeführt werden kann. Ich schätze, ich muss das MKPolygon in ein CGRect konvertieren und CGRectContainsPoint verwenden.

MKPolygon hat eine .points-Eigenschaft, aber ich kann nicht scheinen, sie wieder herauszubekommen.

irgendwelche Vorschläge?

BEARBEITEN:

Die beiden folgenden Lösungen funktionieren unter iOS 6 oder niedriger, jedoch unter iOS 7. Unter iOS 7 funktioniert diepolygon.path Eigentum kehrt immer zurückNULL. Frau Anna war nett genug, um zu versorgeneine Lösung in einer anderen SO-Frage hier. Sie müssen Ihren eigenen Pfad aus den Polygonpunkten erstellen, in die Sie übergehen möchtenCGPathContainsPoint().

Bild meines Polygons:

Antworten auf die Frage(6)

Ihre Antwort auf die Frage