我想在google地图中显示多个标记的多个信息窗口。信息窗口应显示而不点击标记本身。可能吗?经过研究,我了解到将标记设置为mapview选择标记可以使信息窗口显示而不会点击它。但是,一次不能选择多个标记作为地图视图的选定标记。有什么可以做的吗?
答案 0 :(得分:2)
以下是创建自定义标记的代码,如上图所示:
创建UIView
的子类,并将以下方法添加到类中。
-(UIImage*)createCustomMarkerImageWithMarker:(GMSMarker *)marker
{
CGRect priceLabelRect = [marker.title boundingRectWithSize:CGSizeMake(500, 50)
options:NSStringDrawingUsesLineFragmentOrigin
attributes:@{NSFontAttributeName:[UIFont systemFontOfSize:10]}
context:nil];
UILabel *priceLabel = [[UILabel alloc]initWithFrame:CGRectMake(0, 0, priceLabelRect.size.width+25, priceLabelRect.size.height+12)];
priceLabel.text = [NSString stringWithFormat:@" ₹ %@ ",marker.title];
priceLabel.textAlignment = NSTextAlignmentCenter;
priceLabel.textColor = [UIColor blackColor];
priceLabel.backgroundColor = [UIColor clearColor];
priceLabel.font = [UIFont systemFontOfSize:11];
CGRect numberOfPropertiesLabelRect = [marker.snippet boundingRectWithSize:CGSizeMake(300, 50)
options:NSStringDrawingUsesLineFragmentOrigin
attributes:@{NSFontAttributeName:[UIFont systemFontOfSize:10]}
context:nil];
UILabel *numberOfPropertiesLabel = [[UILabel alloc]initWithFrame:CGRectMake(priceLabel.frame.size.width, 0, numberOfPropertiesLabelRect.size.width+10, numberOfPropertiesLabelRect.size.height+12)];
numberOfPropertiesLabel.text = marker.snippet;
numberOfPropertiesLabel.textAlignment = NSTextAlignmentCenter;
numberOfPropertiesLabel.textColor = [UIColor whiteColor];
numberOfPropertiesLabel.backgroundColor = [UIColor clearColor];
numberOfPropertiesLabel.font = [UIFont systemFontOfSize:11];
self.frame = CGRectMake(0, 0, priceLabel.frame.size.width+numberOfPropertiesLabel.frame.size.width, priceLabel.frame.size.height+TriangleHeight);
[self addSubview:priceLabel];
[self addSubview:numberOfPropertiesLabel];
UIGraphicsBeginImageContextWithOptions(self.bounds.size, NO, [[UIScreen mainScreen] scale]);
[self.layer renderInContext:UIGraphicsGetCurrentContext()];
UIImage * icon = UIGraphicsGetImageFromCurrentImageContext();
UIGraphicsEndImageContext();
return icon;
}
在上面的代码中,有2个标签会创建priceLabel
和numberOfPropertiesLabel
。两个标签的框架根据您的要求设置,即视图中标签的位置。然后根据标签的尺寸设置视图的框架。
然后将视图转换为图像。然后将此图像设置为GMSMarker
图像。
答案 1 :(得分:0)