私は、各要素にLatitude
Longitude
とそれ以外のいくつかの値がマップ上にマーカーを描画する配列を持っています。私はGMSMarker
のスニペット、位置、およびアイコンを更新するために次のコードを使用しています。私はUISlider
を使って配列を反復処理しています。私がこれを行うと、マーカーのアイコンと位置が更新され、マーカーのInfoWindow
は更新されません。古いコンテンツのみが表示されます。しかし、私はこれをもう一度選択解除して選択すると、正しい情報ウィンドウの内容が表示されます。 tracksInfoWindowChanges
を使用しようとしましたが、動作しません。GMSMarkerのインフォエリアコンテンツ(スニペット)が更新されていません
@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"
}
}
私の問題を解決するのを도와ください。
ここで問題はありません。マーカーの位置とアイコンは問題なく更新されます。更新しない情報ウィンドウのみ。 –
もし、{}条件の中に 'proMarker'の新しいインスタンスを作成してみてください。 –