Печать UserData для указанной клавиши c при нажатии на маркер - PullRequest
0 голосов
/ 06 апреля 2020

Я добавил маркер

var marker:  GMSMarker?
let position = CLLocationCoordinate2D(latitude: 38.890106, longitude: -77.007362)
marker = GMSMarker(position: position)
var data = Dictionary<String, Any>()
data["type"] = "Mark1" as String
marker?.userData = data
marker?.map = self.map

Теперь в func mapView(_ mapView: GMSMapView, didTap marker: GMSMarker) -> Bool { Я хочу получить значение `[" type "] и для этого, когда я делаю:

    if marker.userData["type"] == "Mark1" {
        print("It's Marker type 1")
    }

Я получаю сообщение об ошибке:

Значение типа 'Any' не имеет подписок

У меня переполнение стека поиска из-за этой ошибки, описанной выше, что решение не связано с моей проблемой поскольку это не связано с местами.

ОБНОВЛЕНИЕ Если я просто напечатаю: print(marker.userData!) Я получу:

{
    type = Mark1;
}

Но я не могу читать ввод Если условие.

1 Ответ

0 голосов
/ 06 апреля 2020

Попробуйте

   func mapView(_ mapView: GMSMapView, didTap marker: GMSMarker) -> Bool {


    guard let data = marker.userData as? [String:Any] else{return false}
    guard let type = data["type"] as? String else{return false}
    if type == "Mark1"  {
        print("It's Marker type 1")
    }
    return true
}
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...