addEventListener для Google Maps в блестящем, чтобы автоматически закрывать информационные окна - PullRequest
0 голосов
/ 08 мая 2018

Похожие темы

Закрытие информационных окон в картах Google нажатием карты?

Google Maps API закрывает информационное окно при нажатии в другом месте

Карты Google: автоматически закрывать открытые информационные окна?

Задача

Я могу настроить таргетинг на все маркеры с помощью метода close и перебрать их с помощью цикла for, чтобы вручную закрыть соответствующие информационные окна, используя:

for (var i = 0; i < mapgoogleMarkersdefaultLayerId.length; i++) {
        mapgoogleMarkersdefaultLayerId[i].infowindow.close();
      }

Однако я планирую закрыть все информационные окна, когда пользователь щелкнет где-нибудь еще на карте. Я попытался использовать addEventListener для объекта карты с помощью:

map.addEventListener("click", function(event) {
      for (var i = 0; i < mapgoogleMarkersdefaultLayerId.length; i++) {
        mapgoogleMarkersdefaultLayerId[i].infowindow.close();
      }
});

Однако, использование слушателя на объекте карты также захватывает маркер, таким образом немедленно закрывая информационное окно, как только пользователь щелкает маркер, в результате ничего не происходит. Я пытался настроить таргетинг на различные «базовые слои» карты Google, используя такие вещи, как ссылки на mapmap.__gm.panes.mapPane, чтобы нацелить маппаны под маркером без результатов.

Подробнее

Я включаю этот сценарий как другой файл в папку с блестящими приложениями и связываю его с моим приложением через includeScript ("closeInfoWindows.js") в пользовательском интерфейсе.

MCVE

library(shiny)
library(googleway)

ui <- fluidPage(
  google_mapOutput(outputId = "map", height = "800px")
)

server <- function(input, output) {

  tram_stops$info <- "Make me dissappear!"
  set_key(api_key)

  output$map <- renderGoogle_map({
    google_map(data = tram_stops) %>%
      add_markers(lat = "stop_lat", lon = "stop_lon", info_window = "info")
  })
}

shinyApp(ui, server)

1 Ответ

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

Я обновил версию разработки googleway, чтобы вы могли указать close_info_window. Если установлено значение TRUE, при нажатии на карту все открытые информационные окна на маркерах закрываются.

## install the development version:
devtools::install_github("SymbolixAU/googleway")

library(googleway)  ## min version: 2.6.1002

tram_stops$info <- "Make me dissappear!"
set_key(apiKey)

google_map(data = tram_stops) %>%
  add_markers(
    info_window = "info", 
    close_info_window = T
    )

enter image description here

Примечание

Это ветка разработки пакета, поэтому я могу вносить изменения без предупреждения (например, в имя аргумента). Любые изменения будут записаны на странице github, относящиеся к этой функции

...