在Google地图中绘制多个标记

时间:2013-07-13 10:01:32

标签: ios objective-c google-maps-sdk-ios

您好我正在使用Google Maps SDK for ios。我想在NSArray的Google地图中绘制一些标记,其中包含位置名称,纬度和经度。 我尝试使用For循环,这似乎有点蹩脚但是,

 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 是具有位置名称的数组,字符串格式的纬度经度我将其转换为double。当我运行此代码时,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_;

任何帮助?

1 个答案:

答案 0 :(得分: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];
}