Shiny+leaflet:如何让 addMarkers 依赖于用户输入
Shiny+leaflet: How to let addMarkers depend on user input
我想让用户选择是否在 Leaflet 地图上绘制某些标记。这取决于 input$competitorchoice,它可以是 TRUE 或 FALSE。当此值为 TRUE 时,我希望仅 绘制某些标记。我会在这个 if 中使用 if 子句和 addMarkers,但这不起作用...
示例代码如下:
output$mymap<-renderLeaflet({
leaflet(data=get(paste(input$type,".locations",sep = ""))[[input$stations]]) %>%
addMarkers(~lon, ~lat,data=terminals,icon=termi,popup = ~name_terminal))
此后,我想添加一个条件 addMarkers.It 仅在 input$competitorchoice 为 TRUE 时调用...
由于您没有提供可重现的示例,我将其基于 Leaflet 教程数据集。一种方法是有一个反应性的复选框输入。这是我的尝试,其中可以通过单击框来标记 enabled/disabled。
library(shiny)
library(leaflet)
ui <- fluidPage(
leafletOutput("mymap"),
p(),
# Add checkboxInput() to turn markers on and off:
checkboxInput("markers", "Turn On Markers", FALSE)
)
server <- function(input, output, session) {
# Some random data:
dat <- data.frame(long = rnorm(40) * 2 + 13, lat = rnorm(40) + 48)
# observe() looks for changes in input$markers and adds/removes
# markers as necessary:
observe({
proxy <- leafletProxy("mymap", data = dat)
proxy %>% clearMarkers()
if (input$markers) {
proxy %>% addMarkers()
}
})
# Render basic map with any element that will not change.
# Note: you can change the starting zoom/positioning/et cetera
# as appropriate:
output$mymap <- renderLeaflet({
leaflet(dat) %>% addProviderTiles("Stamen.TonerLite", options = providerTileOptions(noWrap = TRUE))
})
}
shinyApp(ui, server)
我想让用户选择是否在 Leaflet 地图上绘制某些标记。这取决于 input$competitorchoice,它可以是 TRUE 或 FALSE。当此值为 TRUE 时,我希望仅 绘制某些标记。我会在这个 if 中使用 if 子句和 addMarkers,但这不起作用...
示例代码如下:
output$mymap<-renderLeaflet({
leaflet(data=get(paste(input$type,".locations",sep = ""))[[input$stations]]) %>%
addMarkers(~lon, ~lat,data=terminals,icon=termi,popup = ~name_terminal))
此后,我想添加一个条件 addMarkers.It 仅在 input$competitorchoice 为 TRUE 时调用...
由于您没有提供可重现的示例,我将其基于 Leaflet 教程数据集。一种方法是有一个反应性的复选框输入。这是我的尝试,其中可以通过单击框来标记 enabled/disabled。
library(shiny)
library(leaflet)
ui <- fluidPage(
leafletOutput("mymap"),
p(),
# Add checkboxInput() to turn markers on and off:
checkboxInput("markers", "Turn On Markers", FALSE)
)
server <- function(input, output, session) {
# Some random data:
dat <- data.frame(long = rnorm(40) * 2 + 13, lat = rnorm(40) + 48)
# observe() looks for changes in input$markers and adds/removes
# markers as necessary:
observe({
proxy <- leafletProxy("mymap", data = dat)
proxy %>% clearMarkers()
if (input$markers) {
proxy %>% addMarkers()
}
})
# Render basic map with any element that will not change.
# Note: you can change the starting zoom/positioning/et cetera
# as appropriate:
output$mymap <- renderLeaflet({
leaflet(dat) %>% addProviderTiles("Stamen.TonerLite", options = providerTileOptions(noWrap = TRUE))
})
}
shinyApp(ui, server)