मेरे पास एक समन्वय क्षेत्र है जिसे मैंने निर्धारित किया है कि मैं अपने ऐप के लिए जो दिखाना चाहता हूं उसकी सीमाएं हैं। मैंने इसे केंद्र बिंदु अक्षांश, देशांतर और एक अवधि के साथ एक एमके कॉर्डिनेट क्षेत्र के रूप में स्थापित किया है। मैं कैसे निर्धारित करूं कि वर्तमान उपयोगकर्ता स्थान मेरे समन्वय क्षेत्र के अंदर है या नहीं?मैं कैसे निर्धारित करूं कि वर्तमान उपयोगकर्ता स्थान मेरे MKCoordinateRegion के अंदर है या नहीं?
उत्तर
मानचित्र रीक्ट का उपयोग करें। मानचित्र के वर्तमान दृश्यमान आय का उपयोग करके यहां एक उदाहरण दिया गया है। अपने प्रश्न के संबंध में, आप पहले से अपने क्षेत्र को MKMapRect
में परिवर्तित करने के लिए convertRegion:toRectToView:
का उपयोग कर सकते हैं।
MKMapPoint userPoint = MKMapPointForCoordinate(mapView.userLocation.location.coordinate);
MKMapRect mapRect = mapView.visibleMapRect;
BOOL inside = MKMapRectContainsPoint(mapRect, userPoint);
वहाँ अगर एक बिंदु अपने क्षेत्र के अंदर है अगर क्षेत्र एक बहुभुज रे कास्टिंग कलन विधि का उपयोग द्वारा दिया जाता है तय करने के लिए एक सरल उपाय है: यहाँ http://en.wikipedia.org/wiki/Point_in_polygon
देखें एक प्रारंभिक बिंदु के रूप में एक स्थान की गारंटी का उपयोग बाहर होने के लिए आपका क्षेत्र, उदाहरण के लिए (भौगोलिक) उत्तर ध्रुव।
मैं वास्तव में MapKit में कुछ ऐसा है जो मेरे लिए काम करना होगा के लिए देख रहा था! –
स्विफ्ट firstresponder के जवाब के 3 संस्करण:
let userPoint = MKMapPointForCoordinate(mapView.userLocation.coordinate)
let mapRect = mapView.visibleMapRect
let inside = MKMapRectContainsPoint(mapRect, userPoint)
सुंदर ज्यादा एक ही। यह एपीआई स्विफ्ट-इफिड नहीं किया गया है (यानी, स्विफ्ट एपीआई डिज़ाइन दिशानिर्देशों के अनुरूप अपडेट किया गया है) अभी तक। यह वास्तव में होना चाहिए ...
let userPoint = mapView.userLocation.coordinate.mapPoint
let inside = mapView.visibleMapRect.contains(userPoint)
हा, बहुत बाद में जवाब पाने के लिए मजाकिया! धन्यवाद, एक अच्छा जवाब है, इसलिए मैं आगे बढ़ूंगा और आपको निशान दूंगा - कन्वर्ट रेगियन: toRectToView वह चीज़ है जिसे मैं याद कर रहा था। –