45

CLLocationドキュメントから、関数を使用して2点間の距離を見つけることができることがわかりますdistanceFromLocation:。しかし、私の問題は、CLLocationデータ型がないことです。CLLocationCoordinate2Dポイントがあります。では、2つのCLLocationCoordinate2Dポイント間の距離をどのように見つけることができますか。投稿を見たことがありますが、役に立ちませんでした。

4

8 に答える 8

39

を使用してCLLocationのオブジェクトを作成する必要があります。

- (id)initWithLatitude:(CLLocationDegrees)latitude
    longitude:(CLLocationDegrees)longitude;

次に、を使用して距離を計算できるはずです

[location1 distanceFromLocation:location2];
于 2012-06-18T05:42:02.287 に答える
35

スイフト5:

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(from: to)
    }
}
于 2015-02-23T21:10:13.183 に答える
33

ポイント間の距離をメートル単位で取得しても問題ない場合は、

CLLocationCoordinate2D coordinate1 = <some value>
CLLocationCoordinate2D coordinate2 = <some value>
…
MKMapPoint point1 = MKMapPointForCoordinate(coordinate1);
MKMapPoint point2 = MKMapPointForCoordinate(coordinate2);
CLLocationDistance distance = MKMetersBetweenMapPoints(point1, point2);

2 点間の距離を返します。CLLocationgivenで作成する必要はありませんCLLocationCoordinate2D。この定義は iOS 4.0 以降で利用可能です

于 2015-05-25T16:06:44.933 に答える
6
    let point1 = MKMapPointForCoordinate(myLocation)
    let point2 = MKMapPointForCoordinate(friendLocation)
    let distance = MKMetersBetweenMapPoints(point1, point2)/1000
    let distanceStr = NSString(format: "%.3f", distance)

Valleriの答えの簡易版。1000 で割って KM を取得し、その後に文字列に変換します。

于 2015-08-03T14:12:38.713 に答える
1

Swift 5 : 距離を計算するための CLLocationCoordinate2D 拡張機能:

extension CLLocationCoordinate2D {
    /// Returns distance from coordianate in meters.
    /// - Parameter from: coordinate which will be used as end point.
    /// - Returns: Returns distance in meters.
    func distance(from: CLLocationCoordinate2D) -> CLLocationDistance {
        let from = CLLocation(latitude: from.latitude, longitude: from.longitude)
        let to = CLLocation(latitude: self.latitude, longitude: self.longitude)
        return from.distance(from: to)
    }
}

使用法:

let coordinate = CLLocationCoordinate2D(latitude: 11, longitude: 39)
let from = CLLocationCoordinate2D(latitude: 30, longitude: 43)
let distance = coordinate.distance(from: from)
于 2020-10-19T20:12:19.123 に答える
-2

CLLocationDistanceメートル単位の測定値です。

let point1 = CLLocationCoordinate2D(latitude: lat1, longitude: lon1)
let point2 = CLLocationCoordinate2D(latitude: lat2, longitude: lon2)
let distance = point1.distance(to: point2)
于 2019-05-02T01:59:23.280 に答える