У меня есть GMSOverlay в GMSMapView, поэтому я слушаю прослушивание в нем с помощью метода:
func mapView(_ mapView: GMSMapView, didTap overlay: GMSOverlay) {
// Overlay was tapped
}
Затем я хочу, чтобы GMSMarker был закрашен поверх GMSOverlay, и я слушаю прикосновения к нему с помощью метода:
func mapView(_ mapView: GMSMapView, didTap marker: GMSMarker) -> Bool {
// Marker was tapped
return false
}
Каждый раз, когда вызывается прослушиватель маркера, его информационное окно скрывается (если оно отображается) или отображается (если оно скрыто).
Проблема в том, что слушатель маркера не вызывается каждый раз, когда я нажимаю на него .
Шаг за шагом:
Нажмите на маркер:
- В информационном окне отображается , поскольку вызывается прослушиватель маркера.
- Слушатель оверлея не вызывается.
Нажмите на маркер:
- Информационное окно не скрывает (оно должно быть), потому что слушатель маркера не вызывается.
- Слушатель оверлея называется (не должен).
Нажмите на маркер:
- Информационное окно скрывает , потому что вызывается прослушиватель маркера.
- Слушатель оверлея не вызывается.
Нажмите на маркер:
- Информационное окно не показывает (должно быть), потому что слушатель маркера не вызывается.
- Слушатель оверлея вызывается (не должен).
Нажмите на маркер: шаг 1.
Нажмите на маркер: шаг 2.
Нажмите на маркер: шаг 3.
Нажмите на маркер: шаг 4.
... и так далее ...
Вкратце:
После первого касания мне нужно дважды нажать маркер, чтобы скрыть или показать информационное окно.