Почему мне нужно дважды нажать GMSMarker, когда он перекрывает GMSOverlay, чтобы показать его информационное окно? - PullRequest
0 голосов
/ 07 мая 2018

У меня есть 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. Нажмите на маркер:

    • Информационное окно не показывает (должно быть), потому что слушатель маркера не вызывается.
    • Слушатель оверлея вызывается (не должен).
  5. Нажмите на маркер: шаг 1.

  6. Нажмите на маркер: шаг 2.

  7. Нажмите на маркер: шаг 3.

  8. Нажмите на маркер: шаг 4.

... и так далее ...

Вкратце:

После первого касания мне нужно дважды нажать маркер, чтобы скрыть или показать информационное окно.

enter image description here

...