相关主题
Closing info windows in google maps by clicking the map?
Google maps api close infowindow when clicking somewhere else
Google Maps: Auto close open InfoWindows?
问题
我可以使用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
之类的东西来定位谷歌地图的各种“基础层”,以便在没有结果的情况下定位标记下面的标记。
更多信息
我将此脚本作为另一个文件包含在我的闪亮app文件夹中,并通过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)
答案 0 :(得分: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 page relating to this feature
上