0

相关主题

通过单击地图关闭谷歌地图中的信息窗口?

单击其他地方时Google maps api关闭信息窗口

谷歌地图:自动关闭打开 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以定位标记下方的地图窗格,但没有结果。

更多信息

我将此脚本作为另一个文件包含在我闪亮的应用程序文件夹中,并通过 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)
4

1 回答 1

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 页面上

于 2018-05-09T02:55:05.473 回答