[R-sig-Geo] "Preselecting" shapes on leaflet map shiny using mapedit::selectmod
nevil amos
nevil.amos at gmail.com
Thu Mar 22 02:37:00 CET 2018
Hi I am putting together a shiny map app in which I want to allow for
selection or deselection of polygons from a map layer.
Importantly At the beginning of the process I would like a subset of the
polygons to be already selected ( and they can then be deselected using a
click if required).
The final set of selected polygons is then saved to disk.
Ideally I would like to be able ( eg using a shiny action button) to reset
the selection to the pre-selected polygons.
I have the basic click select working fine, but cannot work out how to
pre-select some polygons so that they are dis as selected ( and can be
deselected with a click) at the start of the process.
Secondly is there a way to reset the selection to the pre-selected set.
The pre-selected polygon ids will change depending on another interactive.
toy example of code is below with comments about the two issues that I
cannot figure out:
library(shiny)
library(mapedit)
library(leaflet)
outputDir<-getwd()
saveData <- function(data,fileName) {
# Write the file to the local system
write.csv(
x = data,
file = file.path(outputDir, fileName),
row.names = FALSE, quote = TRUE
)
}
# An example se of preslected values for the polygon layer
# in the real app this will change based on other selections in the UI
preselected1<-gadmCHE$NAME_1[1:3]
preselected2<-gadmCHE$NAME_1[5:8]
ui <- fluidPage(
radioButtons(inputId = "presel",label = "Preselection",choiceNames =
c("preselected1","preselected2"),choices =
c("preselected1","preselected2")),
actionButton("startSel", "Show Polygons"),
actionButton("endSel", "Do not Save"),
actionButton("saveSel","Save Revised Selection"),
actionButton("resetSel","Reset Selection\n does not work at the moment"),
selectModUI("selector")
)
server <- function(input, output) {
ns <<- NS("selector")
base_map <- leaflet() %>%
addTiles()%>%
addPolygons(data =gadmCHE,
label = ~NAME_1,
layerId = ~NAME_1,
group="Polygons")
#####
#####
####HOW can I feed in the preslected ids to the process so they
####are displayed when the polygons group is shown ?
Selects<<-callModule(selectMod,
"selector",
base_map,
styleFalse = list(fillOpacity =0,
weight = 1,
opacity = 1),
styleTrue = list(fillOpacity = 1,
weight= 1,
opacity = 0))
leafletProxy(ns("map"))%>%
hideGroup("Polygons")
observe({selOuts<-Selects()
selOuts<<-selOuts
selOut<<-t(selOuts[selOuts$selected==TRUE,"id"])})
observeEvent(input$startSel,{
* #####*
* ####HOW can I feed in the preslected ids to the process so they*
* ####are displayed when the polygons group is shown ?*
leafletProxy(ns("map"))%>%
showGroup("Polygons")})
observeEvent(input$resetSel,{
* ####*
* ####*
* ####How can I reset the polygons to the preselected set?*
leafletProxy(ns("map"))%>%
showGroup("Polygons")})
observeEvent(input$endSel,{
leafletProxy(ns("map"))%>%
hideGroup("Polygons")})
observeEvent(input$saveSel,{
outname<-"Revision.csv"
saveData(selOut,outname)
rm(outname)
})
}
shinyApp(ui = ui, server = server)
[[alternative HTML version deleted]]
More information about the R-sig-Geo
mailing list