2013-07-13 2 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 : 경계를 넘어서는 색인을 표시합니다. 이는 동일한 객체를 사용하여 동일한지도에서 다른 색인을 표시하려고하기 때문일 수 있습니다. 그러나 동시에, 나는 어떤 방법 으로든 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와 % @", lat, lt, ln, name)의 % f와 % f;는 배열에서 모든 문서를 출력합니다. – 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

관련 문제