首页 > 解决方案 > 如何在swift 5中的谷歌地图中设置标记标题文本大小

问题描述

我在 swift 5 中使用了谷歌地图。我使用了带有标记标题的图标。但是我的标记标题覆盖了图标。标记图标没有清楚地显示。我的图标每 10 秒移动一次。我还对标记使用了旋转。当向左或向右旋转时,标记标题会覆盖我的图标。这是屏幕截图 在此处输入图像描述 这里是下面的代码..

let marker = GMSMarker()
marker.title = "D M Th 13-6573"
marker.icon = UIImage(named: "item_car_slow")
marker.rotation = CLLocationDegrees(heading)
marker.map =  self.googleMap
self.googleMap.selectedMarker = marker

请帮我

标签: swiftgoogle-maps

解决方案


好吧,在对问题进行了更多搜索之后,我可以肯定地说,当应用旋转然后infoWindowAnchor不正确时就会发生这种情况。

所以你在这里要做的是infoWindowAnchor根据角度计算如下

let marker = GMSMarker()
marker.title = "D M Th 13-6573"
marker.icon = UIImage(named: "item_car_slow")
marker.rotation = CLLocationDegrees(heading)
marker.map =  self.googleMap
marker.infoWindowAnchor = getInfoWindowAnchorFor(heading)
self.googleMap.selectedMarker = marker

以下函数将计算正确的锚点。

func getInfoWindowAnchorFor(_ angle: Double) -> CGPoint {
    let x = sin(-angle * Double.pi / 180) * 0.5 + 0.5
    let y = -(cos(-angle * Double.pi / 180) * 0.5 - 0.5)
    return CGPoint(x: x, y: y)
}

请注意,上述逻辑取自this answer this answer on an old question for android SDK。有关逻辑和计算的详细信息,请访问原始答案。

这应该可以解决您的问题。

快乐编码


推荐阅读