单击标记以打开绘图/数据表

时间:2016-10-05 12:44:14

标签: shiny leaflet action

我正在制作有光泽的传单。这些工具是基本的,我有一个带有一些标记的地图(来自LONG和LAT的表格)。

我想要做的是在点击标记时打开表格或图表。

有一种简单的方法吗?

你有一个非常简单的例子:你在地图上有一个制造商,你点击了标记,还有一个情节或一个表或jpeg开放?

2 个答案:

答案 0 :(得分:1)

这里有一个传单示例文件:

https://github.com/rstudio/shiny-examples/blob/ca20e6b3a6be9d5e75cfb2fcba12dd02384d49e3/063-superzip-example/server.R

 # When map is clicked, show a popup with city info
  observe({
    leafletProxy("map") %>% clearPopups()
    event <- input$map_shape_click
    if (is.null(event))
      return()

    isolate({
      showZipcodePopup(event$id, event$lat, event$lng)
    })
  })

在线演示(查看点击气泡时会发生什么): http://shiny.rstudio.com/gallery/superzip-example.html

在客户端,只要点击标记,JavaScript就会接受此事件并与Shiny服务器端通信,后者可以input$map_shape_click处理它。

答案 1 :(得分:1)

这是另一个例子,taken from here并且有点适应。单击标记时,下表将相应更改。

除此之外,这里有一本很好的资源: https://rstudio.github.io/leaflet/shiny.html

library(leaflet)
library(shiny)
myData <- data.frame(
  lat = c(54.406486, 53.406486),
  lng = c(-2.925284, -1.925284),
  id = c(1,2)
)
ui <- fluidPage(
  leafletOutput("map"),
  p(),
  tableOutput("myTable")
)
server <- shinyServer(function(input, output) {
  data <- reactiveValues(clickedMarker=NULL)
  # produce the basic leaflet map with single marker
  output$map <- renderLeaflet(
    leaflet() %>%
      addProviderTiles("CartoDB.Positron") %>%
      addCircleMarkers(lat = myData$lat, lng = myData$lng, layerId = myData$id)  
  )
  # observe the marker click info and print to console when it is changed.
  observeEvent(input$map_marker_click,{
    print("observed map_marker_click")
    data$clickedMarker <- input$map_marker_click
    print(data$clickedMarker)
    output$myTable <- renderTable({
      return(
        subset(myData,id == data$clickedMarker$id)
      )
    })
  })
})
shinyApp(ui, server)