如何使两个坐标相互匹配?

时间:2017-07-29 01:18:08

标签: ios swift coordinates

我正在尝试取两个坐标并使它们相互匹配,以便弹出一个按钮,但我一直收到错误。到目前为止,这是我的代码:

this.dataGridView1.DoubleBuffered(true);

我使用的是Swift 3,Firebase和Xcode 8。

1 个答案:

答案 0 :(得分:2)

要比较两个CLLocationCoordinate2D,你可以检查他们的纬度和长度。

func payTime() {
    if driverLocation?.latitude == userLocation?.latitude && driverLocation?.longitude == userLocation?.longitude {
        // Overlapping
    }
}

但是,只有当它们位于完全相同的位置时才会起作用。或者你可以使用这样的东西:

func payTime() {
    if let driverLocation = driverLocation, let userLocation = userLocation{
        let driverLoc = CLLocation(latitude: driverLocation.latitude, longitude: driverLocation.longitude)
        let userLoc = CLLocation(latitude: userLocation.latitude, longitude: userLocation.longitude)
        if driverLoc.distance(from: userLoc) < 10{
            // Overlapping
        }
    }
}

这会将两个点转换为CLLocation,然后检查它们之间的距离(以米为单位)。您可以使用阈值来获得所需的结果。

修改1:

这是一个扩展程序,可以更轻松地比较位置。

extension CLLocationCoordinate2D{
    func isWithin(meters: Double, of: CLLocationCoordinate2D) -> Bool{
        let currentLoc = CLLocation(latitude: self.latitude, longitude: self.longitude)
        let comparingLoc = CLLocation(latitude: of.latitude, longitude: of.longitude)
        return currentLoc.distance(from: comparingLoc) < meters
    }
}

func payTime() {
    if let driverLocation = driverLocation, let userLocation = userLocation{
        if driverLocation.isWithin(meters: 10, of: userLocation){
            // Overlapping
        }
    }
}