Obj-C - Google Maps SDK 获取所选标记的数据?

Posted

技术标签:

【中文标题】Obj-C - Google Maps SDK 获取所选标记的数据?【英文标题】:Obj-C - Google Maps SDK get data for selected marker? 【发布时间】:2021-06-11 13:40:04 【问题描述】:

我正在尝试使用以下代码获取选定标记的数据:

-(void)viewDidLoad 

 NSMutableDictionary *viewParams3 = [NSMutableDictionary new];
     [viewParams3 setValue:@"breweries" forKey:@"view_name"];
     [DiosView viewGet:viewParams3 success:^(AFHTTPRequestOperation *operation, id responseObject) 
         
         self.breweryLocations = [responseObject mutableCopy];
      
      
         int index = 0;
         
         for (NSMutableDictionary *brewInfo in self.breweryLocations) 
         
         NSString *location = brewInfo[@"address"];
         NSString *userNames = brewInfo[@"node_title"];
         NSString *firstRemoved = [userNames stringByReplacingOccurrencesOfString:@"'" withString:@""];

          
         NSString *userBio = brewInfo[@"body"];
         

          
          CLGeocoder *geocoderFriend = [[CLGeocoder alloc] init];
          [geocoderFriend geocodeAddressString:location
            completionHandler:^(NSArray* placemarks, NSError* error)
            if (placemarks && placemarks.count > 0) 
           CLPlacemark *topResult = [placemarks objectAtIndex:0];
             MKPlacemark *placemark = [[MKPlacemark alloc] initWithPlacemark:topResult];
      
                
                
                CLLocationCoordinate2D position = placemark.coordinate;
                GMSMarker *marker = [GMSMarker markerWithPosition:position];
                marker.title = firstRemoved;
                marker.icon = [UIImage imageNamed:@"brewIconMax"];
                marker.map = self.mapView;
                marker.userData = self.breweryLocations;
               
                marker.map.selectedMarker.zIndex = index + 1;
                                                                               
          
          
                                                        ];
          
          
      
         
      failure:^(AFHTTPRequestOperation *operation, NSError *error) 
         NSLog(@"Failure: %@", [error localizedDescription]);
     ];




- (BOOL) mapView: (GMSMapView *)mapView didTapMarker:(GMSMarker *)marker


   self.venueCategory.text = marker.userData[mapView.selectedMarker.zIndex][@"type"];


也就是说,这行代码

self.venueCategory.text = marker.userData[mapView.selectedMarker.zIndex][@"type"];

无论我点击哪个标记,都从数组中的第一个字典返回数据(zIndex 始终返回为 0)。我似乎无法在任何地方找到正确的代码来获取所选标记的数组数据。

知道那条线应该是什么样子吗?

【问题讨论】:

【参考方案1】:

我不清楚“类型”是否是啤酒厂位置字典的一个元素,所以我在这里进行一些猜测。

我建议将marker.userData 设置为brewInfo 字典,而不是整个breweryLocations 数组。

marker.userData = brewInfo;

然后从brewInfo 字典中获取“类型”。

self.venueCategory.text = marker.userData[@"type"];

【讨论】:

啊,这成功了 - 非常感谢!! 我怎么能不帮忙拍可爱的狗照片 ;-) 大声笑!很高兴在我的照片中加入我的狗正在吸引大众回答我的问题,哈哈。谢谢一百万:)

以上是关于Obj-C - Google Maps SDK 获取所选标记的数据?的主要内容,如果未能解决你的问题,请参考以下文章

google_maps_flutter sdk 问题

NativeScript:@nativescript/geolocation 与 nativescript-google-maps-sdk

com.google.android.gms:play-services-maps 的最佳 sdk 版本是啥?

如何更新 Google Maps SDK iOS

iOS 中使用 nativescript-google-maps-sdk 的地图中心错误

iOS google maps sdk GMSMarker 定位