2015-08-23 252 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