addEventListener для Google Maps в блестящем, чтобы автоматически закрывать информационные окна
Связанные темы
Закрытие информационных окон в Google Maps, нажав на карту?
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
нацелить на mappanes ниже маркера без результатов.
Больше информации
Я включаю этот сценарий как другой файл в папку с блестящими приложениями и связываю его с моим приложением через 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 ответ
Я обновил версию для разработчиков 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
)
Заметка
Это в ветке разработки пакета, поэтому я могу вносить изменения без предупреждения (например, в имя аргумента). Любые изменения будут записаны на странице GitHub, касающиеся этой функции