Как использовать переменную вне функции в Google Maps SDK - PullRequest
0 голосов
/ 07 мая 2018

У меня следующая структура

struct Talleres : Codable {
    let id : Int?
    let title : String?
}

Я использую для извлечения данных JSON и для добавления маркеров в Google Maps (SDK).

С переменной marker.accessibilityLabel = state.title я сохраняю заголовок, чтобы использовать его в другой функции.

func jsonMapTaller() {
.
.
.
    for state in self.marcadores {
        let coordinates = CLLocationCoordinate2D(latitude: lat, longitude: long)
        let marker = GMSMarker(position: coordinates)
        marker.map = self.map
        marker.icon = UIImage(named: "pin")
        marker.accessibilityLabel = state.title
    }
}

Использование данных, хранящихся в marker.accessibilityLabel Я добавляю эту информацию (заголовок) в пользовательские информационные окна в следующей функции:

func mapView(_ mapView: GMSMapView, didTap marker: GMSMarker) -> Bool {
.
.
.
    let myTitle:String! = marker.accessibilityLabel!
    infoWindow.titleLbl.text = myTitle
.
.
.
    infoWindow.center = mapView.projection.point(for: location)
    infoWindow.center.y = infoWindow.center.y - 107
    infoWindow.infoBtn.addTarget(self, action: #selector(buttonTapped), for: .touchUpInside)
    self.view.addSubview(infoWindow)
    return false
}

Как сохранить больше переменных ? Например, state.id и сможете использовать его в функции func mapView (_mapView: GMSMapView, didTap marker: GMSMarker) -> Bool {...?

1 Ответ

0 голосов
/ 08 мая 2018

Чтобы сохранить данные и затем использовать их в другой функции, используйте userData

for state in self.marcadores {
        let coordinates = CLLocationCoordinate2D(latitude: lat, longitude: long)
        let marker = GMSMarker(position: coordinates)
        marker.map = self.map
        marker.icon = UIImage(named: "pin")
        marker.accessibilityLabel = state.title

       // store current marker data
        marker.userData = state
    }

Затем вы можете вызвать данные в другой функции, например: (пример для id):

 myID = (marker.userData as! Talleres).id
 print(myID)
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...