DS5*_*501 5 r marker leaflet shiny
我有一层 CircleMarkers,我试图只删除具有特定 layerId 的标记。这些圆形标记的 id 位于数据框中。
下面是一个简单的例子:假设我有一个包含 3 行 id 为 1、2 和 3 的数据框。我尝试创建一个带有删除 id 1、2 或 3 选项的 checkboxInput。
在输入下方将触发使用 removeMarker 函数的 ObserveEvent。然而,什么也没有发生。我已经尝试了一百万种方法将 id 输入到 removeMarker 中,我还尝试了其他几种删除方法。要么什么都没有发生,要么全部消失。我需要一种删除特定标记的方法。
ui <- shinyUI(fluidPage(
sidebarLayout(
sidebarPanel(
checkboxInput("delete1", "Delete ID=1 and 2",value=FALSE),
checkboxInput("delete3", "Delete ID=3",value=FALSE)
),
mainPanel(
leafletOutput("map")
)
)
))
df <- data.frame(id=c(1,2,3),lng = rnorm(3, -106.1039361, 0.5) ,
lat = rnorm(3, 50.543981, 0.5))
server <- shinyServer(function(input, output, session) {
output$map <- renderLeaflet(
leaflet() %>%
addTiles() %>% addCircleMarkers(layerId=df$id,df$lng,df$lat, group='marker', radius=2, fill = TRUE,color='red')
)
observeEvent(input$delete1, {
proxy <- leafletProxy('map')
if (input$delete1){ proxy %>% removeMarker(df[1:2,1])
}
})
observeEvent(input$delete3, {
proxy <- leafletProxy('map')
if (input$delete3){ proxy %>% removeMarker(3)}
})
})
shinyApp(ui, server)
Run Code Online (Sandbox Code Playgroud)
您可以执行类似以下操作,但如果您取消选中该框,您现在设置的方式不会将标记放回原处。
server <- shinyServer(function(input, output, session) {
output$map <- renderLeaflet(
leaflet() %>%
addTiles() %>%
# Add circle markers in different groups
addCircleMarkers(layerId=df$id[1:2], df$lng[1:2], df$lat[1:2], group='one', radius=2, fill = TRUE,color='red') %>%
addCircleMarkers(layerId=df$id[3], df$lng[3], df$lat[3], group='two', radius=2, fill = TRUE,color='red')
)
# Remove group 'one'
observeEvent(input$delete1, {
proxy <- leafletProxy('map')
if (input$delete1){ proxy %>% clearGroup(group = "one")}
})
# Remove group 'two'
observeEvent(input$delete3, {
proxy <- leafletProxy('map')
if (input$delete3){ proxy %>% clearGroup(group = "two")}
})
})
shinyApp(ui, server)
Run Code Online (Sandbox Code Playgroud)
| 归档时间: |
|
| 查看次数: |
3175 次 |
| 最近记录: |