2013-07-13 54 views
2

您好我正在使用Google Maps SDK for ios。我想從包含位置名稱,緯度和經度的NSArray在Google地圖上繪製一些標記。 我試着使用這似乎有點跛已經循環,而且,在Google地圖上繪製多個標記

for(int i=0;i<=[myArray count];i++){ 
    self.view = mapView_; 
    NSString *lat = [[myArray objectAtIndex:i] objectForKey:@"latitude"]; 
    NSString *lon = [[myArray objectAtIndex:i] objectForKey:@"longitude"]; 
    double lt=[lat doubleValue]; 
    double ln=[lon doubleValue];   
    NSString *name = [[myArray objectAtIndex:i] objectForKey:@"name"]; 
    NSLog(@"%@ and %@ and %f and %f of %@",lat,lon, lt,ln,name); 
    GMSMarker *marker = [[GMSMarker alloc] init]; 
    marker.animated=YES; 
    marker.position = CLLocationCoordinate2DMake(lt,ln); 
    marker.title = name; 
    marker.snippet = @"Kathmandu"; 
    marker.map = mapView_; 

}

這裏myArray的是具有位置名稱的數組,字符串格式,我把它轉換翻一番經緯度。當我運行這段代碼時,Xcode向我展示了NSRangeException:index超越界限,這可能是因爲我試圖使用相同的對象在同一個地圖中顯示不同的索引。但同時,我不能想到使用GMSMarker作爲數組的任何方式。 但是我可以繪製多個標記,如果我使用不同的GMSMarker對象,但這並不能解決我的問題。我做了另一個這樣的對象,使用兩個GMSMarker對象在同一個地圖上顯示兩個標記。

GMSMarker *marker1 = [[GMSMarker alloc] init]; 
marker1.animated=YES; 
marker1.position = CLLocationCoordinate2DMake(lt,ln); 
marker1.title = name; 
marker1.snippet = @"Kathmandu"; 
marker1.map = mapView_; 

任何幫助?

+0

我不正是明白這個問題。這個for循環崩潰的索引超出範圍異常?這個命令的輸出是什麼? 'NSLog(@「%@和%@和%f和%f的%@」,lat,lon,lt,ln,name);'它會將數組中的所有文檔打印出來? – Vame

+0

也請解釋你說的「你使用不同的GSMMarker對象」的意思 – Vame

+0

我用NSLog確保所有的元素都有有效的元素並檢查for循環。 for循環只執行一次,並且發生NSRangeException,原因是顯示索引超出界限。我將在我的代碼中編輯關於GMSMarker對象。 –

回答

2

但是與此同時,我無法想象使用GMSMarker作爲數組的方法。

試試這個:

NSMutableArray *markersArray = [[NSMutableArray alloc] init]; 
for(int i=0;i<[myArray count];i++){ 

    // ... initialise marker here 
    marker.map = mapView_; 

    [markersArray addObject:marker]; 
    [marker release]; 
} 
+0

但我需要使用Google地圖。 –

+0

我更新了我的答案。這樣你可以將Marker對象的所有引用保存在一個數組中。 – Vame

相關問題