Desidero essere in grado di dire se il rubinetto si trova all'interno di un MKPolygon.rileva se un punto si trova all'interno di una sovrapposizione MKPolygon
ho un MKPolygon:
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];
il suo solo una struttura di base dello stato del Colorado.
ho avuto il rubinetto per Lat Long conversione/configurare:
-(IBAction)foundTap:(UITapGestureRecognizer *)recognizer
{
CGPoint point = [recognizer locationInView:self.mapView];
CLLocationCoordinate2D tapPoint = [self.mapView convertPoint:point toCoordinateFromView:self.view];
}
ma sono sicuri di come tecnologia se il mio punto di rubinetto è all'interno del MKPolygon. non sembra esserci un metodo per effettuare questo controllo, quindi suppongo di dover convertire MKPolygon in un CGRect e utilizzare CGRectContainsPoint.
MKPolygon ha una proprietà .points ma non riesco a farli tornare indietro.
qualche suggerimento?
EDIT:
Entrambe le soluzioni indicati lavoro in iOS 6 o inferiore, ma interruzioni IOS 7. In iOS 7 proprietà polygon.path
restituisce allways NULL
. La signora Anna è stata così gentile da fornire a solution in another SO question here. Si tratta di creare il tuo percorso dai punti poligono per passare a CGPathContainsPoint()
.
immagine del mio poligono:
Ho appena implementato la categoria e lavoro sui miei poligoni semplici (senza fori). Dici che devi tenerne conto? vuol dire che non rileverà se il rubinetto è dentro un buco? – Padin215
Ok, questo codice si rompe in iOS7. Qualcosa che ha a che fare con 'CGPathContainsPoint (polygonView.path, NULL, polygonViewPoint, NO)' restituisce sempre 'FALSE' ora. – Padin215