Tôi biết từ tài liệu, chúng tôi có thể tìm khoảng cách giữa hai CLLocation
điểm sử dụng hàm, distanceFromLocation:
. Nhưng vấn đề của tôi là tôi không có loại dữ liệu CLLocation với tôi, tôi có các điểm CLLocationCoordinate2D. Vậy làm thế nào tôi có thể tìm khoảng cách giữa hai điểm CLLocationCoordinate2D. Tôi đã xem bài đăng post nhưng không hữu ích cho tôi.Tìm khoảng cách giữa CLLocationCoordinate2D điểm
Trả lời
Bạn nên tạo một đối tượng của CLLocation sử dụng,
- (id)initWithLatitude:(CLLocationDegrees)latitude
longitude:(CLLocationDegrees)longitude;
Bây giờ sử dụng nó, bạn có thể tìm thấy khoảng cách.
Với mã CLLocationDistance distance = [aCLLocationA distanceFromLocation: aCLLocationB]; // khoảng cách là một đôi đại diện cho khoảng cách tính bằng mét (Nguồn - http://stackoverflow.com/a/10432069/1364174) –
Không cần phải tạo CLLocation để nhận khoảng cách giữa các điểm. Hãy nhìn vào câu trả lời của tôi ở cuối –
Swift 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)
}
}
Nhưng tôi suy nghĩ nhiều hơn như thế này: mở rộng CLLocationCoordinate2D {// Trong meteres func khoảng cách (#to: CLLocationCoordinate2D) -> CLLocationDistance { let từ = CLLocation (vĩ độ: self.latitude, kinh độ: self.longitude) let to = CLLocation (vĩ độ: to.latitude, longitude: to.longitude) return from.distanceFromLocation (to) } } – kwerle
Nếu nó là ok cho bạn để có được khoảng cách tính bằng mét giữa các điểm, sau đó
CLLocationCoordinate2D coordinate1 = <some value>
CLLocationCoordinate2D coordinate2 = <some value>
…
MKMapPoint point1 = MKMapPointForCoordinate(coordinate1);
MKMapPoint point2 = MKMapPointForCoordinate(coordinate2);
CLLocationDistance distance = MKMetersBetweenMapPoints(point1, point2);
sẽ trở lại khoảng cách giữa hai điểm. Không cần tạo CLLocation
bằng cách cho trước CLLocationCoordinate2D
. Định nghĩa này có sẵn từ iOS 4.0
Hoạt động tốt cho tôi – VBaarathi
let point1 = MKMapPointForCoordinate(myLocation)
let point2 = MKMapPointForCoordinate(friendLocation)
let distance = MKMetersBetweenMapPoints(point1, point2)/1000
let distanceStr = NSString(format: "%.3f", distance)
Phiên bản đơn giản của câu trả lời của Valleri. Chia cho 1000 để nhận KM sau đó chuyển đổi thành chuỗi.
không hoạt động cho nhanh 3. –
Swift4: kết hợp trên những suy nghĩ
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)
}
}
tính cách thực sự khá phức tạp. Bạn thực sự nên có một cái nhìn thứ hai tại CLLocation. –
do u có lat và lâu sau đó tạo cllocation và sau đó sử dụng CLLocationDistance mét = [newLocation distanceFromLocation: oldLocation]; –
Kiểm tra này: [distanceFromLocation - Tính toán khoảng cách giữa hai điểm] [1] [1]: http://stackoverflow.com/questions/3905896/distancefromlocation-calculate-distance-between-two-points – webmastx