GMSMarker 信息窗口内容(片段)未更新

Posted

技术标签:

【中文标题】GMSMarker 信息窗口内容(片段)未更新【英文标题】:GMSMarker infowindow content(snippet) not updating 【发布时间】:2017-06-17 05:43:45 【问题描述】:

我有一个数组,其中每个元素都有 Latitude Longitude 和其他一些值,用于在地图上绘制标记。我正在使用以下代码来更新GMSMarker 的sn-p、位置和图标。我正在使用UISlider 来遍历数组。当我这样做时,标记的图标和位置会更新,而标记的InfoWindow 不会更新。它仅显示旧内容。但是当我现在取消选择并再次选择它时,它会显示正确的信息窗口内容。我尝试使用tracksInfoWindowChanges,但它不起作用。

 @IBAction func progressChanged(_ sender: UISlider) 

    let iVal = Int(sender.value)

    if iVal < progressList.count 
        let str = progressList[iVal]
        let arr = str.components(separatedBy: "!")
        let lat = Double(arr[4])!
        let lng = Double(arr[5])!
        let pos = CLLocationCoordinate2DMake(lat, lng)
        let fRotation = Float(arr[9])
        let rotation = CGFloat(fRotation!)
        let strTime = arr[0]
        let idleFlag = arr[1]
        let strSpeed = arr[2]
        let strName = arr[3]

        proMarker.position = pos
        proMarker.title = strName

        if idleFlag == "Y" 
            proMarker.snippet = strSpeed + "!" + strTime + "!" + "idle"
            proMarker.tracksInfoWindowChanges = true

            let markerImage = UIImage(named: "arrow_red")
            let rotated = markerImage?.imageRotatedByDegrees(rotation, flip: false)

            proMarker.icon = rotated

         else 
            proMarker.snippet = strSpeed + "!" + strTime + "!" + "moving"
            proMarker.tracksInfoWindowChanges = true

            let markerImage = UIImage(named: "arrow_green")
            let rotated = markerImage?.imageRotatedByDegrees(rotation, flip: false)

            proMarker.icon = rotated
        

        proMarker.groundAnchor = CGPoint(x: 0.5, y: 0.5)

        let dTime = sdf5.date(from: strTime)
        let sTime = sdf6.string(from: dTime!)

        hTime.text = sTime
        hSpeedIdle.text = strSpeed + " km/h"

    


请帮我解决我的问题。

【问题讨论】:

【参考方案1】:

这不是添加lat_long的正确方法,您应该将marker_obj添加到数组中,因为每个标记都包含所有相关信息,它可以帮助您减少这种类型的代码长度。

【讨论】:

这不是问题所在。标记位置和图标更新没有任何问题。只有信息窗口没有更新。 好的,尝试在 if 条件下创建 proMarker 的新实例。【参考方案2】:

正如评论中提到的,可能是您没有制作新标记,或者如果您是,则需要从旧标记中删除地图 (marker.map = nil)。所以当你点击重叠的标记时,信息窗口会依次出现。

【讨论】:

以上是关于GMSMarker 信息窗口内容(片段)未更新的主要内容,如果未能解决你的问题,请参考以下文章

谷歌地图的自定义信息窗口

保存按钮未附加到右侧信息窗口,谷歌地图

在片段中实现对话框时,必须在添加内容之前请求窗口功能

高级openg 混合,一个完整程序

除非主窗口未聚焦,否则不会更新 QLabel

除非主窗口未聚焦,否则不会更新 QLabel