Мне нужно отобразить несколько маркеров на карте по широте и долготе, я пробовал код ниже, чтобы показать два маркера. Он работает хорошо, но если нужно поставить маркер на 20 или 30 местоположений, мне нужно выделить и запустить GMSMarker столько раз. Есть ли другой способ показать несколько маркеров на карте, не запуская GMSMarker для каждого места.

GMSMarker *marker = [[GMSMarker alloc] init];
marker.position = CLLocationCoordinate2DMake(17.4368, 78.4439);

#warning title and snipped must be dynamic
marker.icon = [UIImage imageNamed:@"one.png"];
marker.title = @"Sydney";
marker.snippet = @"Australia";
marker.appearAnimation = kGMSMarkerAnimationPop;
marker.map = _mapView;


GMSMarker *marker1 = [[GMSMarker alloc] init];
marker1.position = CLLocationCoordinate2DMake(17.398932, 78.472718);
marker1.icon = [UIImage imageNamed:@"one.png"];
marker1.map=_mapView;
0
Code cracker 5 Янв 2016 в 15:46

2 ответа

Лучший ответ

Поместите данные для каждого маркера в массив, а затем запустите их в цикле.

NSArray* arrMarkerData = @[
                           @{@"title": @"Sydney", @"snippet": @"Australia", @"position": [[CLLocation alloc]initWithLatitude:17.4368 longitude:78.4439]},
                           @{@"title": @"Other location", @"snippet": @"other snippet", @"position": [[CLLocation alloc]initWithLatitude:17.398932 longitude:78.472718]}
                           ];

for (NSDictionary* dict in arrMarkerData)
{
    GMSMarker *marker = [[GMSMarker alloc] init];
    marker.icon = [UIImage imageNamed:@"one.png"];
    marker.position = [(CLLocation*)dict[@"position"] coordinate];
    marker.title = dict[@"title"];
    marker.snippet = dict[@"snippet"];
    marker.appearAnimation = kGMSMarkerAnimationPop;
    marker.map = _mapView;
}
4
ZeMoon 5 Янв 2016 в 13:05

Для тех, кто использует Swift 5

  let arrMarkerData = [
         [
    "title": "Sydney",
    "snippet": "Australia",
    "position": CLLocationCoordinate2D(latitude: 17.4368, longitude: 78.4439)
],
[
    "title": "Other location",
    "snippet": "other snippet",
    "position": CLLocationCoordinate2D(latitude: 17.398932, longitude: 78.472718)
]
    ]
    
    for dict in arrMarkerData {
        guard let dict = dict as? [AnyHashable : Any] else {
            continue
        }
        let marker = GMSMarker()
        //marker.icon = UIImage(named: "one.png")
        marker.position = (dict["position"] as? CLLocationCoordinate2D)!
        marker.title = dict["title"] as? String
        marker.snippet = dict["snippet"] as? String
        marker.appearAnimation = .pop
        marker.map = mapView
    }
0
MoussaHellal 22 Июл 2020 в 16:03