无法在 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
}