0

我有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 中绘制一条折线。

谁能建议我在哪里未能做到这一点?

4

1 回答 1

0

在您的代码中,该行

if let coordinatesArray = geoMetrys.value(forKey: "coordinates") as? NSArray

返回一个类型的数组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
}
于 2018-03-15T08:15:17.550 回答