在Google地图上为ios添加自定义标记上的文字

我试图把标记Textview。是否有任何可能性添加文字在谷歌地图上的标记在iOS中。 喜欢这个

您必须创build一个视图,在这里您必须创build一个imageView(带有标记图像)和Label(带有文本)并截取该视图的截图,并将其设置为GMSMarker的图标。 像这样的东西:

- (void)foo { GMSMarker *marker = [GMSMarker new]; UIView *view = [[UIView alloc] initWithFrame:CGRectMake(0,0,60,60)]; UIImageView *pinImageView = [[UIImageView alloc] initWithImage:[UIImage imageNamed:@"myPin"]]; UILabel *label = [UILabel new]; label.text = @"1"; //label.font = ...; [label sizeToFit]; [view addSubview:pinImageView]; [view addSubview:label]; //ie customize view to get what you need UIImage *markerIcon = [self imageFromView:view]; marker.icon = markerIcon; marker.map = self.mapView; } - (UIImage *)imageFromView:(UIView *) view { if ([[UIScreen mainScreen] respondsToSelector:@selector(scale)]) { UIGraphicsBeginImageContextWithOptions(view.frame.size, NO, [[UIScreen mainScreen] scale]); } else { UIGraphicsBeginImageContext(view.frame.size); } [view.layer renderInContext: UIGraphicsGetCurrentContext()]; UIImage *image = UIGraphicsGetImageFromCurrentImageContext(); UIGraphicsEndImageContext(); return image; } 

在这里输入图像说明

如果你想显示这样的东西,那么只要按照这些步骤。 这很简单,你可以使用这个方法。

 -(UIImage *)createImage:(NSUInteger)count{ //count is the integer that has to be shown on the marker UIColor *color = [UIColor redColor]; // select needed color NSString *string = [NSString stringWithFormat:@"%lu",(unsigned long)count]; // the string to colorize NSDictionary *attrs = @{ NSForegroundColorAttributeName : color }; NSAttributedString *attrStr = [[NSAttributedString alloc] initWithString:string attributes:attrs]; // add Font according to your need UIImage *image = [UIImage imageNamed:@"ic_marker_orange"]; // The image on which text has to be added UIGraphicsBeginImageContext(image.size); [image drawInRect:CGRectMake(0,0,image.size.width,image.size.height)]; CGRect rect = CGRectMake(20,5, image.size.width, image.size.height);// change the frame of your text from here [[UIColor whiteColor] set]; [attrStr drawInRect:rect]; UIImage *markerImage = UIGraphicsGetImageFromCurrentImageContext(); UIGraphicsEndImageContext(); return markerImage;} 

当你把标记设置到地图上,然后设置

  GMSMarker *marker = [[GMSMarker alloc] init]; marker.icon = [self createImage:[model.strFriendCount integerValue]]; // pass any integer to the method. 

这是Kunal的答案的迅速版本:

 func createImage(_ count: Int) -> UIImage { //count is the integer that has to be shown on the marker let color = UIColor.red // select needed color let string = "\(UInt(count))" // the string to colorize let attrs = [NSForegroundColorAttributeName: color] let attrStr = NSAttributedString(string: string, attributes: attrs) // add Font according to your need let image = UIImage(named: "ic_marker_orange")! // The image on which text has to be added UIGraphicsBeginImageContext(image.size) image.draw(in: CGRect(x: CGFloat(0), y: CGFloat(0), width: CGFloat(image.size.width), height: CGFloat(image.size.height))) let rect = CGRect(x: CGFloat(20), y: CGFloat(5), width: CGFloat(image.size.width), height: CGFloat(image.size.height)) attrStr.draw(in: rect) let markerImage = UIGraphicsGetImageFromCurrentImageContext()! UIGraphicsEndImageContext() return markerImage } 

希望这可以帮助别人。