我正在制作有光泽的传单。这些工具是基本的,我有一个带有一些标记的地图(来自LONG和LAT的表格)。
我想要做的是在点击标记时打开表格或图表。
有一种简单的方法吗?
你有一个非常简单的例子:你在地图上有一个制造商,你点击了标记,还有一个情节或一个表或jpeg开放?
答案 0 :(得分:1)
这里有一个传单示例文件:
# 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)