我正在尝试取两个坐标并使它们相互匹配,以便弹出一个按钮,但我一直收到错误。到目前为止,这是我的代码:
this.dataGridView1.DoubleBuffered(true);
我使用的是Swift 3,Firebase和Xcode 8。
答案 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
}
}
}