Jal*_*lal 4 google-maps ios swift ios9
如何在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
}
Run Code Online (Sandbox Code Playgroud)
您的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.
}
}
Run Code Online (Sandbox Code Playgroud)
我个人发现最简单的方法是添加一个GMSMarkerwith aUILabel作为它的iconView属性。
let labelMarker = GMSMarker(position: coordinate)
let label = UILabel()
label.text = "Hello friends"
label.sizeToFit()
labelMarker.iconView = label
labelMarker.map = mapView
Run Code Online (Sandbox Code Playgroud)
如果您向地图添加大量标记,此方法可能会遇到性能问题,但如果您需要向地图添加一些标签,则此方法非常有效。
| 归档时间: |
|
| 查看次数: |
2747 次 |
| 最近记录: |