Я хочу, чтобы узнать, находится ли кран в MKPolygon.
У меня есть 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];
его просто базовый план штата Колорадо.
Я получил настройку для настройки lat/long:
-(IBAction)foundTap:(UITapGestureRecognizer *)recognizer
{
CGPoint point = [recognizer locationInView:self.mapView];
CLLocationCoordinate2D tapPoint = [self.mapView convertPoint:point toCoordinateFromView:self.view];
}
но я не уверен, как использовать технологию, если моя точка перехода находится внутри MKPolygon. похоже, нет способа выполнить эту проверку, поэтому я предполагаю, что мне нужно преобразовать MKPolygon в CGRect и использовать CGRectContainsPoint.
У MKPolygon есть свойство .points, но я не могу заставить их отступить.
любые предложения?
EDIT:
Оба решения ниже работают в iOS 6 или ниже, но прерываются в iOS 7. В iOS 7 свойство polygon.path
всегда возвращает NULL
. Г-жа Анна была достаточно любезна, чтобы предоставить решение в другом SO-вопросе здесь. Он включает в себя создание собственного пути из точек многоугольника, чтобы перейти в CGPathContainsPoint()
.
изображение моего многоугольника: