iOS:如何使用自定义信息窗口动态创建GMSMarker?

Yau*_*Lau 2 dictionary marker ios

我通过for循环创建GMSMarker,但GMSMarker不支持标记

for(int i=0;i<[self.shopDetailArray count];i++)
    {
        SHShopLocator *shop = [self.shopDetailArray objectAtIndex:i];

        GMSMarker *marker = [[GMSMarker alloc] init];
        marker.position = CLLocationCoordinate2DMake(22.2783, 114.1589);
        marker.icon = [UIImage imageNamed:@"StoreLocator_pin"];
        marker.infoWindowAnchor = CGPointMake(0.3, 0.4);
        marker.map = self.map;
    }
Run Code Online (Sandbox Code Playgroud)

那么在设置自定义markerInfoWindow时如何识别每个标记?

  - (UIView *)mapView:(GMSMapView *)mapView markerInfoWindow:(GMSMarker *)marker
Run Code Online (Sandbox Code Playgroud)

E-R*_*die 5

您可以使用属性用户数据GMSMarker.您可以存储每个标记的标识符!

GMSMarker *marker = [[GMSMarker alloc] init];
marker.userData = @{@"marker_id":[NSNumber numberWithInt:12]};
Run Code Online (Sandbox Code Playgroud)

在以下位置检索其值:

- (UIView *)mapView:(GMSMapView *)mapView markerInfoWindow:(GMSMarker *)marker
{
    NSNumber *number = [marker.userData objectForKey:@"marker_id"];

    return mapView;
}
Run Code Online (Sandbox Code Playgroud)

文档

标记数据.您可以使用此属性将任意对象与此标记相关联.适用于iOS的Google Maps SDK既不会读取也不会写入此属性.请注意,userData不应包含对任何Maps对象的任何强引用,否则可能会创建一个循环(阻止ARC释放对象).