相关主题
问题
我可以使用 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();
}
});
但是,在地图对象上使用侦听器也会捕获标记,因此一旦用户单击标记,就会立即关闭信息窗口,从而不会发生任何事情。我尝试使用诸如引用之类的东西来定位谷歌地图的各种“基础层”,mapmap.__gm.panes.mapPane
以定位标记下方的地图窗格,但没有结果。
更多信息
我将此脚本作为另一个文件包含在我闪亮的应用程序文件夹中,并通过 UI 中的 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)