如何在iOS的Google地图中的多边形上添加文本标签?我试图添加一个叠加层,但是它只接受图像而不是文本?我在iOS 9上的Swift上使用ios的google maps。
这是令我困扰的代码部分:
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绘制方法可能不正确,您可以尝试以下代码从文本制作新图像:
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. } }