MapKit का उपयोग कर दूरी का निर्धारण

वोट
5

कैसे एक 1000ft या 1/2 मील दूरी MapKit के साथ निर्धारित किया जाता है? या तो कुछ पिन से एक त्रिज्या या दो पिनों के बीच की दूरी।

उदाहरण के लिए, मैं पर पिन ए पिंस बी, सी नक्शे को केंद्र में, और डी ए से 1/2 मील के भीतर हैं पिन ए बी और सी से विभिन्न दूरी पर मानचित्र पर भी कर रहे हैं लेकिन डी 1 मील दूर है। मुझे पता है कि मैं ऐसा कैसे की गणना कर सकते कि बी और सी ए से 1/2 मील के भीतर हैं चाहते हैं?

10/03/2010 को 02:57
का स्रोत उपयोगकर्ता
अन्य भाषाओं में...                            


3 जवाब

वोट
13

जब से तुम दो अलग-अलग बिंदुओं "पिन" हैं कि कहा गया है, मैं आप MKPinAnnotationView (या कुछ अन्य एनोटेशन देखें) का उपयोग कर रहे ग्रहण करने के लिए जा रहा हूँ। यदि नहीं, तो आप स्थान किसी अन्य तरीके से प्राप्त करने के लिए जा रहे हैं।

यदि आप इन स्थानों के लिए एनोटेशन वस्तुओं की ओर इशारा है, तो आप आसानी से कॉल कर सकते हैं -coordinateउन पर, इन निर्देशांक (का उपयोग करने से CLLocations बनाने -initWithLatitude:longitude:), और फिर विधि का उपयोग -getDistanceFromमीटर में दूरी को पुनः प्राप्त करने। वहाँ से, यह मील के लिए एक आसान रूपांतरण है। सभी से कहा कोड कुछ इस तरह दिखेगा:

CLLocationCoordinate2D pointACoordinate = [pointAAnnotation coordinate];
CLLocation *pointALocation = [[CLLocation alloc] initWithLatitude:pointACoordinate.latitude longitude:pointACoordinate.longitude];
CLLocationCoordinate2D pointBCoordinate = [pointBAnnotation coordinate];
CLLocation *pointBLocation = [[CLLocation alloc] initWithLatitude:pointBCoordinate.latitude longitude:pointBCoordinate.longitude];
double distanceMeters = [pointALocation getDistanceFrom:pointBLocation];
double distanceMiles = (distanceMeters / 1609.344);

आप मील में दूरी के साथ खत्म कर देंगे, और वहाँ से तुलना कर सकते हैं। उम्मीद है की यह मदद करेगा।

10/03/2010 को 08:31
का स्रोत उपयोगकर्ता

वोट
12

getDistanceFrom अब तो यहां अब मान्य नहीं है ऐसा करने के लिए देख किसी के लिए एक विकल्प के जवाब है।

CLLocationCoordinate2D pointACoordinate = [pointAAnnotation coordinate];
CLLocation *pointALocation = [[CLLocation alloc] initWithLatitude:pointACoordinate.latitude longitude:pointACoordinate.longitude];  

CLLocationCoordinate2D pointBCoordinate = [pointBAnnotation coordinate];
CLLocation *pointBLocation = [[CLLocation alloc] initWithLatitude:pointBCoordinate.latitude longitude:pointBCoordinate.longitude];  

float distanceMeters = [pointALocation distanceFromLocation:pointBLocation];
float distanceMiles = (distanceMeters / 1609.344);  

[pointALocation release];
[pointBLocation release];  

इसके बाद के संस्करण के रूप में, आप इस्तेमाल कर सकते हैं floatके बजाय doubleऔर आप किसी पूर्णांक पर परिणाम डाली सकता है अगर आप की शुद्धता की आवश्यकता नहीं है floatइसलिए जैसे:

int distanceCastToInt = (int) [pointALocation distanceFromLocation:pointBLocation];

intउपयोगी है यदि आप ऐसा तरह एनोटेशन में दूरी का मोटा अनुमान देना चाहता था:

pointAAnnotation.title = @"Point A";
pointAAnnotation.subtitle = [NSString stringWithFormat: @"Distance: %im",distanceCastToInt];

उदाहरण के लिए: "50 मीटर की दूरी" एनोटेशन का उपशीर्षक में लिखा होगा।

22/02/2011 को 02:37
का स्रोत उपयोगकर्ता

वोट
0

यह देखते हुए उत्तर की स्विफ्ट 3 बराबर है:

let pointACoordinate = pointAAnnotation.coordinate
let pointALocation = CLLocation(latitude: pointACoordinate.latitude, longitude: pointACoordinate.longitude)
let pointBCoordinate = pointBAnnotation.coordinate
let pointBLocation = CLLocation(latitude: pointBCoordinate.latitude, longitude: pointBCoordinate.longitude)
let distanceMeters = pointALocation.distance(from: pointBLocation)
let distanceMiles = (distanceMeters / 1609.344)
10/11/2016 को 22:21
का स्रोत उपयोगकर्ता

Cookies help us deliver our services. By using our services, you agree to our use of cookies. Learn more