2015-08-23 172 views
0

当前正在使用地图视图并将地图添加到地图。我知道如何使用addAnotation()方法将单个点添加到地图。现在,我正在尝试以最简单的方式为MapView添加多个点。我已经从一个在线XML文件中提取数据(纬度,经度和名称)并将其存储在一个数组中,现在我想在地图中添加所有这些坐标+名称作为引脚。这样做的我已经声明MKPointAnnotation对象,像这样的数组:创建一个MKPointAnnotation对象数组

var pinsArray: [MKPointAnnotation] = [] 

然后换到我所做的倾销所收集的数据如下:

for i in 0...(myFeed.count-1) { 

     pinsArray[i].title = myFeed.objectAtIndex(i).objectForKey("NOMBRE")!.stringValue 
     pinsArray[i].coordinate = CLLocationCoordinate2D(latitude: myFeed[i].objectForKey("LATITUD")!.doubleValue, longitude: myFeed[i].objectForKey("LONGITUD")!.doubleValue) 
     pinsArray[i].subtitle = "" 

     mapView.addAnnotation(pinsArray[i]) 
    } 

但是当我运行的应用程序我收到一个错误,说数组索引超出范围(fatal error: Array index out of range)。我想这是pinsArray的声明的问题,我真的不知道如何解决这个问题。

+0

在这行你得到这个例外? – gagarwal

+0

for循环中的第一个 – jdmg718

+0

我猜你的“pinsArray”是空的。 – gagarwal

回答

0

试试这个:

var pinsArray: [MKPointAnnotation] = [] 

for i in 0...(myFeed.count-1) 
{ 
    let pointAnnotation = MKPointAnnotation() // First create an annotation. 

    pointAnnotation.title = myFeed.objectAtIndex(i).objectForKey("NOMBRE")!.stringValue 
    pointAnnotation.coordinate = CLLocationCoordinate2D(latitude: myFeed[i].objectForKey("LATITUD")!.doubleValue, longitude: myFeed[i].objectForKey("LONGITUD")!.doubleValue) 
    pointAnnotation.subtitle = "" 

    pinsArray.append(pointAnnotation) // Now append this newly created annotation to array. 
} 

mapView.addAnnotations(pinsArray) // Add all the annotations to map view at once. 
+0

将'mapView.addAnnotations(pinsArray)'更改为'pinsArray.append(pointAnnotation)',并且工作完美。谢谢! – jdmg718