无法在 swift 中将数组数据转换为 CLLocationCoordinate2D 以在地图视图中绘制折线
Not able to convert from Array data to CLLocationCoordinate2D in swift to draw a Polyline in mapview
我有数据数组 (coordinatesArray
),它具有如下所示的双精度值。
(
"-61.4149691",
"42.9572076"
)
(
"-61.4126004",
"42.9572026"
)
(
"-61.476674304",
"42.9572032"
)
这是地图数据
(
"-61.4149691",
"42.9572076"
)
因此,我采用了一个循环,通过将每个索引数据转换为双精度来将其转换为纬度和经度。
if let coordinatesArray = geoMetrys.value(forKey: "coordinates") as? NSArray {
for mapData in coordinatesArray {
print(mapData)
let latitude = (mapData[0] as NSString).doubleValue
let longitude = (mapData[1] as NSString).doubleValue
var coordinatesToAppend: CLLocationCoordinate2D? = [latitude, longitude]
var polyline = MKPolyline(coordinates: &coordinatesToAppend!, count: coordinatesArray.count)
mapView.add(polyline)
但是,编译时显示错误。
`Type 'Any' has no subscript members` for following lines
let latitude = (mapData[0] as NSString).doubleValue
let longitude = (mapData[1] as NSString).doubleValue
我有一个数组,其中包含纬度和经度值数据。
所以,我正在尝试使用这些值在 mapview 中绘制折线。
任何人都可以告诉我我未能实现这一目标的地方吗?
在您的代码中,行
if let coordinatesArray = geoMetrys.value(forKey: "coordinates") as? NSArray
returns Any
类型的数组(即 [Any]
)。之后,当你使用 for 循环
for mapData in coordinatesArray
您实际上是在遍历 Any
的数组,其中,在每次迭代中,一个项目(Any
类型)被分配给 mapData
。现在如果这个 mapData
本身就是一个数组,你必须明确地将它指定为
if let dataArray = mapData as? NSArray {
let latitude = (dataArray[0] as NSString).doubleValue
let longitude = (dataArray[1] as NSString).doubleValue
}
我有数据数组 (coordinatesArray
),它具有如下所示的双精度值。
(
"-61.4149691",
"42.9572076"
)
(
"-61.4126004",
"42.9572026"
)
(
"-61.476674304",
"42.9572032"
)
这是地图数据
(
"-61.4149691",
"42.9572076"
)
因此,我采用了一个循环,通过将每个索引数据转换为双精度来将其转换为纬度和经度。
if let coordinatesArray = geoMetrys.value(forKey: "coordinates") as? NSArray {
for mapData in coordinatesArray {
print(mapData)
let latitude = (mapData[0] as NSString).doubleValue
let longitude = (mapData[1] as NSString).doubleValue
var coordinatesToAppend: CLLocationCoordinate2D? = [latitude, longitude]
var polyline = MKPolyline(coordinates: &coordinatesToAppend!, count: coordinatesArray.count)
mapView.add(polyline)
但是,编译时显示错误。
`Type 'Any' has no subscript members` for following lines
let latitude = (mapData[0] as NSString).doubleValue
let longitude = (mapData[1] as NSString).doubleValue
我有一个数组,其中包含纬度和经度值数据。 所以,我正在尝试使用这些值在 mapview 中绘制折线。
任何人都可以告诉我我未能实现这一目标的地方吗?
在您的代码中,行
if let coordinatesArray = geoMetrys.value(forKey: "coordinates") as? NSArray
returns Any
类型的数组(即 [Any]
)。之后,当你使用 for 循环
for mapData in coordinatesArray
您实际上是在遍历 Any
的数组,其中,在每次迭代中,一个项目(Any
类型)被分配给 mapData
。现在如果这个 mapData
本身就是一个数组,你必须明确地将它指定为
if let dataArray = mapData as? NSArray {
let latitude = (dataArray[0] as NSString).doubleValue
let longitude = (dataArray[1] as NSString).doubleValue
}