Что я хочу сделать, это довольно просто. Я хочу сохранить все события кликов на карте Shiny/Leaflet. Вот пример кода:Как «сохранить» события кликов в Листочке Блестящая карта
library(raster)
library(shiny)
library(leaflet)
#load shapefile
rwa <- getData("GADM", country = "RWA", level = 1)
shinyApp(
ui = fluidPage(
leafletOutput("map")
),
server <- function(input, output, session){
#initial map output
output$map <- renderLeaflet({
leaflet() %>%
addTiles() %>%
addPolygons(data = rwa,
fillColor = "white",
fillOpacity = 1,
color = "black",
stroke = T,
weight = 1,
layerId = [email protected]$OBJECTID,
group = "regions")
}) #END RENDER LEAFLET
observeEvent(input$map_shape_click, {
#create object for clicked polygon
click <- input$map_shape_click
print(click$id)
}) #END OBSERVE EVENT
}) #END SHINYAPP
Как вы можете видеть, я могу напечатать клик идентификаторами (или все события щелчка) при нажатии на многоугольник. Достаточно легко. Однако в тот момент, когда я нажимаю другой полигон, вся информация о моем первом щелкнутом многоугольнике теряется. Я вижу, что есть аргумент autoDestroy = F
в observeEvent
, но я не уверен, как использовать его для сохранения ранее щелкнутых полигонов. Есть ли способ сохранить все мои клики/щелкнуть $ ids в векторе или списке?
Спасибо, это трюк! Я получил возможность наблюдать за событиями, но пока не могу понять, как реагировать. Все еще довольно новый для Shiny. – Lauren
@ Lauren Стоит отметить, что 'reactiveValues' отличаются от' реактивных() 'функций. Оба они очень полезны сами по себе. – SymbolixAU
@John Paul, @SymbolixAU, если я изменю свой «наблюдательный элемент», чтобы просто «наблюдать», мой элемент с первым щелчком повторяется (по-видимому) бесконечно. Любое понимание того, почему это происходит/как его исправить? Или я должен задать другой вопрос? – Lauren