当前位置: 首页 > 面试题库 >

在iOS版的Google Maps中为多边形添加文本标签

郑功
2023-03-14
问题内容

如何在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绘制方法可能不正确,您可以尝试以下代码从文本制作新图像:

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.
    }

}

在此处输入图片说明



 类似资料:
  • 问题内容: 我创建了一个扩展awt.Polygon类的类。我正在尝试编写一种方法,该方法给出了多边形的PathIterator和一个表示顶点的Point,将点添加到路径中的适当位置。 例如:一个点为(0,0)(0,10)(10,10)(10,0)(正方形)的多边形,给定点(1,5)将使多边形(0,0) (1,5)(0,10)(10,10)(10,0) 提前致谢 问题答案: 扩展@normaloci

  • 我必须允许用户输入多个邮政编码,从数据库中检索纬度和经度,然后构建一个包含它们的巨大多边形。 我需要在代码中修改什么才能将所有这些较小的多边形变成一个较大的多边形?我在谷歌上搜索过答案,我所能找到的只是逐个构建每个邮政编码的多边形,但这仍然不能给我一个更大、单个多边形的最终结果。 目前,输入邮政编码后,程序从数据库中收集lat和long点,并将它们输入一个巨大的数组(确切地说是字符串[][]),然

  • 问题内容: 直到现在,这还没有打到我(这不仅在webkit浏览器中)。在所有类似标记,标记等的文本中,文本上方和下方都有多余的空间。 在chrome中,我发现了这一点: 用户代理样式表 这使得对齐在某些地方是错误的。是的,我正在使用重置样式表,并且未添加任何填充或边距。基本设置。为什么会这样,我该如何解决? 问题答案: 您还可以直接修改这些属性,如下所示: 在Chrome / Safari中对我有

  • 我正在使用谷歌地图api 3,在我的地图上,我想在多边形之后生成kml标记,但它不起作用,我的标记是在多边形之前生成的,所以我无法单击标记。

  • [![我想点击Male,它反映在文本区域的Gender旁边:Male] 例如,我得到了这个脚本,我想要一个选项,当我点击按钮Male,它显示在gender旁边:在里面,如果我点击Male,它就会显示在Male旁边,就像这个Male,faleme? 文本框的图像:

  • 我试图从顶点位置创建一组多边形,保存在X,Y格式。 下面是我的数据的一个例子——每行代表一个多边形的顶点。多边形是正方形 我正在使用,因此我的数据需要在列表中。所以我创建了一个循环来尝试从矩阵中将我的数据转换为列表格式。 我创建了一个循环,遵循我在这个网站上的其他一些问题中找到的代码。我突破了每一步,试图理解为什么我只有一个多边形作为输出,即使我有2组点。 你能帮我理解我如何调整代码写出两个多边形