如何获取用户当前位置和其他一些坐标是否相同?

时间:2016-08-01 08:05:29

标签: ios google-maps maps mapkit mapbox

我希望将用户当前位置与其他位置匹配,无论它们是否相同。

我的逻辑:

            point.coordinate = coordinate
            let userLat = mapView.userLocation?.coordinate.latitude
            let userLong = mapView.userLocation?.coordinate.longitude
            if point.coordinate.latitude == userLat && point.coordinate.longitude == userLong
            {
            point.title = "You are here"

            }
            else
            {
            point.title = "\(coordinate.latitude), \(coordinate.longitude)"
            }

但问题是,mapView.userLocation?.coordinate.latitude不等于point.coordinate.latitude。但是我在模拟器和其他cooridinate中为userLocation设置了相同的值。

我为用户位置设置的值为: Lat:28.6 长:77.35

我为其他坐标设置的值是: Lat:28.6 长:77.35

我为用户位置获得的价值是: Lat:可选    - 部分:3.4028234663852886e + 38

长:▿可选    - 部分:3.4028234663852886e + 38

我得到的其他坐标值是: Lat:28.6 长:77.35

如果有更好的逻辑来找出这个东西,那么请告诉我。

1 个答案:

答案 0 :(得分:2)

你的点对象 - CLLocation子类的对象吗?如果没有,请从point.coordinate创建CLLocation并进行比较,如下所示。 尝试使用这种方法比较CLLocation对象而不是坐标:

let distanceThreshold: CLLocationDistance = 2.0 // in meters
if point.distanceFromLocation(mapView.userLocation!) < distanceThreshold {
point.title = "You are here"
} else {
point.title = "\(coordinate.latitude), \(coordinate.longitude)"
}

或者您可以将阈值设置为0