1
我在地圖上有一些點與一些關聯的數據。過濾和選擇R閃亮和傳單中的點
首先,我想根據它們的屬性過濾這些點。這工作正常,但最近當我運行應用程序和小提琴的過濾器,最終它會停止刪除以前過濾的點,並剛剛加載新過濾點頂部。經過大約10次濾波器調整後,這種情況已經發生。這就好像clearMarkers()
函數停止工作。過濾的數據也將顯示在一個被動的data.table
(該部分工作正常,沒有包括在這個例子中)。
其次,我想單擊點來選擇它們。選定點的數據將在稍後顯示。我絕對可以選擇一個點,但我無法保持所有點擊點的反應變量。另外,如果再次點擊,選定的點應該被取消選中。選定的點將在地圖上突出顯示(通過在地圖上添加更亮的標記)以及反應的data.table中,選擇應更新地圖中的點擊次數並在表格中單擊。但是這只是一小步。
下面是一些示例代碼,它不起作用。
library(sp)
library(leaflet)
library(shiny)
data <- data.frame(x = c(10,20,30,10,40), y = c(20,20,10,30,30), z = c(1,2,3,4,5))
points <- SpatialPointsDataFrame(data[,1:2],data[3])
server <- function(input, output, session) {
filtered <- reactive({
z.in <- input$z
points[[email protected]$z > z.in,]
})
selected <- reactiveValues()
output$map <- renderLeaflet({leaflet()})
observe({ # This observer works, but it seems to stop working about about 10 tries
leafletProxy("map") %>%
clearMarkers() %>%
addCircleMarkers(data = filtered())
})
observe({ # This observer does not work, and the app won't run unless you comment it out
clicked <- unlist(input$map_marker_click[3:4])
if (is.na(clicked)) {selected <- clicked}
else if (clicked %in% selected) {selected <- selected[-clicked]}
else {selected <- append(selected, clicked)}
})
}
ui <- bootstrapPage(
tags$style(type = "text/css", "html, body {width:100%;height:100%}"),
leafletOutput("map", width = "100%", height = "100%"),
absolutePanel(top = 10,left = 10,
sliderInput("z", "z",0,6,0)
))
shinyApp(ui = ui, server = server)