将 NSNumber 转换为 Double(CLLocationDegrees)
Converting NSNumber to Double(CLLocationDegrees)
我正在尝试将纬度和经度添加到地图上的注释中。
我的数据是JSON类型
"{\"lat\": 25.0437396, \"lng\": 121.5308224}"
我先转成字典
["lat": 25.0437396, "lng": 121.5308224]
并使用字典中的值添加
var coordinate = CLLocationCoordinate2D()
let latNum = shopCoordinate["lat"] as! NSNumber
let lngNum = shopCoordinate["lng"] as! NSNumber
let lat = latNum as? Double
let lng = lngNum as? Double
coordinate.latitude = lat!
coordinate.longitude = lng!
但是Double类型的值会变成这样,不显示在地图上
25.043739599999999, 121.53082240000001
我不能将它转换为其他类型,因为 CLLocationDegrees 接受双精度类型。这让我发疯。如果有人可以给我任何建议,我将非常感激。
为什么不直接将其转换为 Double
?
if let latNum = shopCoordinate["lat"] as? Double, let lngNum = shopCoordinate["lng"] as? Double {
let coordinate = CLLocationCoordinate2D(latitude: latNum, longitude: lngNum)
}
你快到了。您只需要将数据转换为 Double
而不是 NSNumber
,就像这样:
var coordinate = CLLocationCoordinate2D()
let lat = shopCoordinate["lat"] as! Double
let lng = shopCoordinate["lng"] as! Double
coordinate.latitude = lat
coordinate.longitude = lng
我正在尝试将纬度和经度添加到地图上的注释中。 我的数据是JSON类型
"{\"lat\": 25.0437396, \"lng\": 121.5308224}"
我先转成字典
["lat": 25.0437396, "lng": 121.5308224]
并使用字典中的值添加
var coordinate = CLLocationCoordinate2D()
let latNum = shopCoordinate["lat"] as! NSNumber
let lngNum = shopCoordinate["lng"] as! NSNumber
let lat = latNum as? Double
let lng = lngNum as? Double
coordinate.latitude = lat!
coordinate.longitude = lng!
但是Double类型的值会变成这样,不显示在地图上
25.043739599999999, 121.53082240000001
我不能将它转换为其他类型,因为 CLLocationDegrees 接受双精度类型。这让我发疯。如果有人可以给我任何建议,我将非常感激。
为什么不直接将其转换为 Double
?
if let latNum = shopCoordinate["lat"] as? Double, let lngNum = shopCoordinate["lng"] as? Double {
let coordinate = CLLocationCoordinate2D(latitude: latNum, longitude: lngNum)
}
你快到了。您只需要将数据转换为 Double
而不是 NSNumber
,就像这样:
var coordinate = CLLocationCoordinate2D()
let lat = shopCoordinate["lat"] as! Double
let lng = shopCoordinate["lng"] as! Double
coordinate.latitude = lat
coordinate.longitude = lng