Прослушивание касания InfoWindow в Swift

#ios #swift #google-maps-sdk-ios

#iOS #swift #google-карты-sdk-ios

Вопрос:

Я знаю, что можно фиксировать нажатия в infowindow маркера. Я следил за документацией здесь.

Все они записаны, Objective C поэтому я попытался преобразовать их в Swift , вот мой код:

 func mapView(_ mapView: GMSMapView, didTap InfoWindowOfMarker: GMSMarker) {
        print("You tapped infowindow")

    }
  

Но это вообще не срабатывает. Что не так с этим методом?

Комментарии:

1. приношу свои извинения за позднее обновление, теперь, пожалуйста, посмотрите, работает ли оно идеально..

2. вам не хватает set delegate, и я увидел _ , что внутри вашего метода есть отметка, которая может привести к тому, что он не будет выполняться, просто проверьте мои ответы.

Ответ №1:

Вам необходимо использовать делегат GMSMapView вместе с некоторыми предыдущими настройками, см. Ниже.

Объявите использование GMSMapViewDelegate методов и установите для делегата значение self :

 class yourClassName: UIViewController,GMSMapViewDelegate

mapView?.delegate = self
  

Способ обнаружения нажатия на InfoWindow:

 func mapView(_ mapView: GMSMapView, didTapInfoWindowOf marker: GMSMarker) {
    print("infowindow tapped")
}
  

Способ обнаружения нажатия на GMSMarker :

 func mapView(mapView: GMSMapView, didTapMarker marker: GMSMarker) -> Bool {
    print("tapped on marker")

    if marker.title == "myMarker"{
        print("handle specific marker")
    }
    return true
}
  

Способ создания пользовательского InfoWindow:

 func mapView(mapView: GMSMapView!, markerInfoWindow marker: GMSMarker!) -> UIView! {
        let infoWindow = Bundle.main.loadNibNamed("nibName", owner: self, options: nil).first as! ClassName
        infoWindow.name.text = "title"
        infoWindow.address.text = "relevant address"
        infoWindow.photo.image = UIImage(named: "imageName")
        return infoWindow
    }
  

Комментарии:

1. Здравствуйте. ваш код предназначен для пользовательского infowindow. Я этого не ищу. извините. Я ищу событие касания информационного маркера

2. затем вы можете работать с переменной marker здесь, если вам не нужно пользовательское окно..