GMSMarker infoWindow не обновляется - PullRequest
0 голосов
/ 10 октября 2018

Я использую карту Google и ее маркер.Для отображения информации о маркере я использую пользовательский вид для его отображения.Но значения не обновляются, как только я его инициирую.Ниже приведен мой код для этого.

func mapView(_ mapView: GMSMapView!, markerInfoWindow marker: GMSMarker) -> UIView? {
        let location = CLLocation(latitude: marker.position.latitude, longitude: marker.position.longitude
        var markerView : MarkerInfoView = Bundle.main.loadNibNamed("MarkerInfoView", owner: self, options: nil)![0] as! MarkerInfoView
        let geoCoder = CLGeocoder()
        geoCoder.reverseGeocodeLocation(location) { (placemarkers, error) in
            if let placemarker = placemarkers?.last {
                var strAddress = ""
                if let str = placemarker.name {
                    strAddress += str
                }
                if let str = placemarker.subAdministrativeArea {
                    strAddress += ", " + str
                }
                print(strAddress)
                markerView.deviceInfo.text = "HELLO TESTING"
            print(markerView.deviceInfo.text!) // This is printing "HELLO TESTING", but not updating on marker
                markerView.addressInfo.text = strAddress
            }
        }
        if let str = marker.snippet {
            markerView.deviceInfo.text = str.components(separatedBy: "|")[0]
            //TODO: add time
            markerView.dateInfo.text = str.components(separatedBy: "|")[1]
//            markerView.addressInfo.text = ""
        }
        else {
            markerView.deviceInfo.text = ""
            markerView.dateInfo.text = ""
//            markerView.addressInfo.text = ""
        }
        return markerView

    }

Пожалуйста, сообщите мне, как обновить значения в infoWindow.

1 Ответ

0 голосов
/ 10 октября 2018

Попробуйте этот код

// MARKER - GoogleMaps delegate
func mapView(_ mapView: GMSMapView, markerInfoContents marker: GMSMarker) -> UIView? {
    print("title \(markerTitle)")

    var infoView:UIView!

    infoView = UIView()
    infoView.frame = CGRect(x: 0, y: 0, width: 300, height: 75)
    infoView.backgroundColor = .black

    let orderIDLbl = UILabel(frame: CGRect(x: 0, y: 0, width: 300, height: 75))
    orderIDLbl.text = "markerTitle" //Your title here
    orderIDLbl.font = UIFont.systemFont(ofSize: 15)
    orderIDLbl.textAlignment = NSTextAlignment.center
    orderIDLbl.numberOfLines = 0
    orderIDLbl.textColor = .white
    infoView.addSubview(orderIDLbl)

    return infoView
}
...