के बीच दूरी ढूँढना मुझे दस्तावेज़ से पता है हम फ़ंक्शन, distanceFromLocation:
का उपयोग कर दो CLLocation
अंक के बीच दूरी पा सकते हैं। लेकिन मेरी समस्या यह है कि मेरे पास सीएलएलोकेशन डेटा प्रकार नहीं है, मेरे पास CLLocationCoordinate2D अंक हैं। तो मैं दो CLLocationCoordinate2D अंक के बीच दूरी कैसे प्राप्त कर सकता हूं। मैंने post पोस्ट देखा है लेकिन मेरे लिए सहायक नहीं है।CLLocationCoordinate2D अंक
उत्तर
आप का उपयोग CLLocation की एक वस्तु बनाने चाहिए,
- (id)initWithLatitude:(CLLocationDegrees)latitude
longitude:(CLLocationDegrees)longitude;
अब यह उपयोग कर, आप दूरी पा सकते हैं।
कोड CLLocationDistance दूरी = [एसीएलोकोकेशन दूरी से स्थान: लोकेशन: एसीएलएलोकेशनबी]; // दूरी मीटर में दूरी का प्रतिनिधित्व करने वाला एक डबल है (स्रोत - http://stackoverflow.com/a/10432069/1364174) –
अंक के बीच दूरी प्राप्त करने के लिए CLLocation बनाने की आवश्यकता नहीं है। कृपया नीचे –
स्विफ्ट 4:
extension CLLocation {
/// Get distance between two points
///
/// - Parameters:
/// - from: first point
/// - to: second point
/// - Returns: the distance in meters
class func distance(from: CLLocationCoordinate2D, to: CLLocationCoordinate2D) -> CLLocationDistance {
let from = CLLocation(latitude: from.latitude, longitude: from.longitude)
let to = CLLocation(latitude: to.latitude, longitude: to.longitude)
return from.distance(to)
}
}
पर मेरा उत्तर को देखो लेकिन मैं और अधिक इस तरह लगता है: विस्तार CLLocationCoordinate2D { // meteres में समारोह दूरी (#to: CLLocationCoordinate2D) -> CLLocationDistance { से = CLLocation (अक्षांश करते हैं: self.latitude, देशांतर: self.longitude) = CLLocation (अक्षांश के लिए करते हैं: to.latitude, देशांतर: to.longitude) (करने के लिए) } वापसी from.distanceFromLocation} – kwerle
अगर यह ठीक है आप अंक के बीच मीटर में दूरी प्राप्त करने के लिए, तो
CLLocationCoordinate2D coordinate1 = <some value>
CLLocationCoordinate2D coordinate2 = <some value>
…
MKMapPoint point1 = MKMapPointForCoordinate(coordinate1);
MKMapPoint point2 = MKMapPointForCoordinate(coordinate2);
CLLocationDistance distance = MKMetersBetweenMapPoints(point1, point2);
दो अंक के बीच की दूरी के लिए वापस आ जाएगी। CLLocationCoordinate2D
दिए गए CLLocation
को बनाने की आवश्यकता नहीं है। यह परिभाषा आईओएस 4.0
मेरे लिए अच्छी तरह से काम करता है – VBaarathi
let point1 = MKMapPointForCoordinate(myLocation)
let point2 = MKMapPointForCoordinate(friendLocation)
let distance = MKMetersBetweenMapPoints(point1, point2)/1000
let distanceStr = NSString(format: "%.3f", distance)
वल्लेरी के उत्तर का सरल संस्करण उपलब्ध है। केएम प्राप्त करने के लिए स्ट्रिंग में रूपांतरण के बाद 1000 से विभाजित करें।
तेज 3 के लिए काम नहीं कर रहा। –
Swift4: विचारों से ऊपर संयुक्त
extension CLLocationCoordinate2D {
//distance in meters, as explained in CLLoactionDistance definition
func distance(from: CLLocationCoordinate2D) -> CLLocationDistance {
let destination=CLLocation(latitude:from.latitude,longitude:from.longitude)
return CLLocation(latitude: latitude, longitude: longitude).distance(from: destination)
}
}
दूरी गणना वास्तव में काफी मुश्किल है। सीएलएलोकेशन पर आपको वास्तव में दूसरा नजर रखना चाहिए। –
क्या आपके पास लेट और लम्बा समय है और फिर क्ल्लोकेशन बनाएं और फिर CLLocationDistance मीटर = [newLocation distanceFromLocation: oldLocation] का उपयोग करें; –
चेक इस [distanceFromLocation - दो अंक के बीच दूरी की गणना] [1] [1]: http://stackoverflow.com/questions/3905896/distancefromlocation-calculate-distance-between-two-points – webmastx