在标记点上显示交互式视图,而不是标记信息窗口



我想显示交互式视图(按钮和文本字段)而不是标记信息窗口。下面的代码用于显示标记信息窗口。

- (UIView *)mapView:(GMSMapView *)mapView markerInfoWindow:(GMSMarker *)marker{
 // created customized view
}

如何显示交互式视图来添加按钮和文本字段,而不是点击信息窗口(didTapMarker)

可以这样做

- (UIView *)mapView:(GMSMapView *)mapView markerInfoWindow:(GMSMarker *)marker
{
UIView *v = [UIView new];
v.frame = CGRectMake(0, 0, 230, 80);
v.backgroundColor = [UIColor whiteColor];
v.layer.borderColor = [UIColor blackColor].CGColor;
v.layer.borderWidth = 1.0f;
v.layer.cornerRadius = 20.f;
NSString *imageURL = nil;
NSString *address = nil;
NSString *name = nil;
if ([marker.userData isKindOfClass:[DemoLocation class]]) //DemoLocation your modelObject
{
    DemoLocation *location = marker.userData;
    NSArray *array = [location.address componentsSeparatedByString:@"n"];
    if (array.count >= 1)
    {
        name = array[0];
    }
    if (array.count >= 2)
    {
        address = array[1];
    }
}
else if([marker.userData isKindOfClass:[GooglePlace class]])
{
    GooglePlace *place = marker.userData;
    imageURL = place.iconURL;
    name = place.name;
    address = place.vicinity;
}
if (imageURL)
{
    UIImageView *imageView = [UIImageView new];
    [imageView sd_setImageWithURL:[NSURL URLWithString:imageURL]];
    [v addSubview:imageView];
    imageView.frame = CGRectMake(10, 25, 40, 40);
}
UILabel *titleLabel = [UILabel new];
titleLabel.font = [StyleHelper createBoldFontWithSize:FONTSIZE_M]; //StyleHelper custom class  
titleLabel.text = name;
titleLabel.numberOfLines = 1;
titleLabel.adjustsFontSizeToFitWidth = YES;
titleLabel.minimumScaleFactor = 0.5f;
[v addSubview:titleLabel];
titleLabel.frame = CGRectMake(55, 5, 170, 16);
[titleLabel sizeToFit];
UILabel *addressLabel = [UILabel new];
addressLabel.font = [StyleHelper createFontWithSize:FONTSIZE_M];
addressLabel.text = address;
addressLabel.numberOfLines = 2;
addressLabel.adjustsFontSizeToFitWidth = YES;
addressLabel.minimumScaleFactor = 0.8f;
[v addSubview:addressLabel];
addressLabel.frame = CGRectMake(55, 24, 170, 26);
[addressLabel sizeToFit];
UILabel *label = [UILabel new];
label.textAlignment = NSTextAlignmentCenter;
label.font = [StyleHelper createBoldFontWithSize:FONTSIZE_M];
label.text = @"Click to play here!";
label.frame = CGRectMake(55, 64, 170, 14);
[v addSubview:label];
return v;
}

谢谢

最新更新