के अंदर है या नहीं, मैं यह बताने में सक्षम होना चाहता हूं कि टैप 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];
इसकी सिर्फ एक राज्य कोलोराडो के बुनियादी रूपरेखा:
मैं एक MKPolygon है।
मैं की स्थापना अक्षांश/देशांतर रूपांतरण के लिए नल है:
-(IBAction)foundTap:(UITapGestureRecognizer *)recognizer
{
CGPoint point = [recognizer locationInView:self.mapView];
CLLocationCoordinate2D tapPoint = [self.mapView convertPoint:point toCoordinateFromView:self.view];
}
लेकिन मैं कैसे तकनीक को लेकर अनिश्चित हूं कि मेरा नल बिंदु MKPolygon के भीतर है। इस चेक को करने का कोई तरीका प्रतीत नहीं होता है, इसलिए मुझे लगता है कि मुझे एमके पॉलीगॉन को एक सीजीईजीईटी में परिवर्तित करने और सीजीआरईटीकंटेंसपॉइंट का उपयोग करने की आवश्यकता है।
एमकेपोलीगॉन में एक पॉइंट संपत्ति है लेकिन मुझे उन्हें वापस नहीं मिल रहा है।
कोई सुझाव?
संपादित करें:
दोनों आईओएस 7 में iOS 6 या कम में काम के लिए निम्न उपाय है, लेकिन टूट जाता है आईओएस 7 में polygon.path
संपत्ति allways NULL
देता है। एमएस अन्ना a solution in another SO question here प्रदान करने के लिए काफी दयालु थी। इसमें बहुभुज बिंदुओं से CGPathContainsPoint()
में अपना रास्ता बनाना शामिल है। मेरी बहुभुज के
छवि:
मैंने अभी श्रेणी को कार्यान्वित किया है और मेरे सरल बहुभुज (कोई छेद) पर काम करता है। आप कहते हैं कि इसे ध्यान में रखना चाहिए? क्या इसका मतलब यह नहीं होगा कि टैप एक छेद के अंदर है या नहीं? – Padin215
ठीक है, यह कोड आईओएस 7 में टूटता है। 'CGPathContainsPoint (polygonView.path, NULL, polygonViewPoint, NO) के साथ कुछ करने के लिए हमेशा 'FALSE' वापस आता है। – Padin215