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