为iOS swift的谷歌地图中的多边形添加文本标签

如何在iOS中的Google地图中的多边形上添加文本标签? 我试图添加叠加但它只接受图像而不是文字? 我在iOS 9上使用谷歌地图为ios与Swift。

这是代码困扰我的部分:

func updateUIMap(){ var str = "Hello" var data = str.dataUsingEncoding(NSUTF8StringEncoding, allowLossyConversion: true) var drawText = NSString(data: data!, encoding: NSUTF8StringEncoding) let size = CGSize(width: 24.0,height: 24.0) var inImage = UIImage() var textColor: UIColor = UIColor.blackColor() var textFont: UIFont = UIFont(name: "Helvetica Bold", size: 12)! UIGraphicsBeginImageContext(size) let textFontAttributes = [ NSFontAttributeName: textFont, NSForegroundColorAttributeName: textColor, ] inImage.drawInRect(CGRectMake(0, 0, size.width, size.height)) var rect: CGRect = CGRectMake(24, 24, size.width, size.height) drawText.drawInRect(rect, withAttributes: textFontAttributes) var newImage: UIImage = UIGraphicsGetImageFromCurrentImageContext() UIGraphicsEndImageContext() var overlay = GMSGroundOverlay(position: myposition, icon: newImage, zoomLevel:20) overlay.bearing = 0 overlay.map = self.mapView } 

您的UIGraphics绘图方法可能不正确,您可以尝试以下代码从文本中创建新图像:

 class ViewController: UIViewController { override func viewDidLoad() { super.viewDidLoad() super.viewDidLoad() let camera = GMSCameraPosition.cameraWithLatitude(40.712216, longitude: -74.22655, zoom: 10) let mapView = GMSMapView.mapWithFrame(CGRectZero, camera: camera) mapView.myLocationEnabled = true self.view = mapView addGroundOverlay(camera.target) } func newImage(text: String, size: CGSize) -> UIImage { let data = text.dataUsingEncoding(NSUTF8StringEncoding, allowLossyConversion: true) let drawText = NSString(data: data!, encoding: NSUTF8StringEncoding) let textFontAttributes = [ NSFontAttributeName: UIFont(name: "Helvetica Bold", size: 20)!, NSForegroundColorAttributeName: UIColor.redColor(), ] UIGraphicsBeginImageContextWithOptions(size, false, 0) drawText?.drawInRect(CGRectMake(0, 0, size.width, size.height), withAttributes: textFontAttributes) let newImage = UIGraphicsGetImageFromCurrentImageContext() UIGraphicsEndImageContext() return newImage } func addGroundOverlay(position: CLLocationCoordinate2D) { let overlay = GMSGroundOverlay(position: position, icon: newImage("Hello StackOverflow", size: CGSizeMake(150.0, 150.0)), zoomLevel: 10) overlay.bearing = 0 overlay.map = (self.view as! GMSMapView) } override func didReceiveMemoryWarning() { super.didReceiveMemoryWarning() // Dispose of any resources that can be recreated. } } 

在此处输入图像描述

我个人发现,最简单的方法是添加一个带有UILabeliconView作为它的iconView属性。

  let labelMarker = GMSMarker(position: coordinate) let label = UILabel() label.text = "Hello friends" label.sizeToFit() labelMarker.iconView = label labelMarker.map = mapView 

如果您要向地图添加TON标记,此方法可能会遇到性能问题,但如果您需要向地图添加一些标签,则此方法非常有效。