wciąż uczę się korzystać z Shiny / R, przepraszam, jeśli odpowiedź jest oczywista próba rzutowania na mapę różnych warstw w oparciu o wybory do wyboru (wiele) Więc mam:
selectizeInput("bays", "Select rough bay outlines",
choices = list("Residents" = "residents", `Pay to park` = "ptp",
"Shared use" = "shared"), multiple = TRUE)
Każdy odpowiednik to geojson
plik, który powinien zostać użyty na mapie (tutaj „mieszkańcy”, ale oczywiście jest wypełniony wybraną opcją z wejścia wyboru):
topoData <- readLines("residents.geojson", warn = FALSE)
%>% paste(collapse = "n")
leafletProxy("mymap") %>%
addPolylines(topodata)
jak mogę skonstruować observeEvent(input$bays,...)
więc każdy wybór uruchamia powyższą akcję (za pomocąwłaściwy plik geojson oczywiście)? Mogę to zrobić dla jednego wyboru, ale wielokrotny wybór może wymagać innego sposobu. I czy bardziej efektywne byłoby użycie submit
przycisk lub reagować na działania? Pamiętaj, że może to być dodanie lub usunięcie wartości z listy wyboru? I wreszcie, w selectize jest fajny gadżet - plugin „remove_button” - dodawanie wpisów za pomocą małego znacznika do usunięcia elementu - widziałem go dla javascript, ale nie dla błyszczącego - czy to możliwe?
$("#input-tags3").selectize({
plugins: ["remove_button"],
delimiter: ",",
persist: false,
create: function(input) {
return {
value: input,
text: input
}
}
});
Odpowiedzi:
0 dla odpowiedzi № 1Nie chcesz observeEvent
ale a reactive
. Coś takiego powinno działać:
# server
topoData <- reactive(
paste(
lapply(
paste0(input$bays,".geojson"), function(geojson) {
readLines(geojson)
}
),collapse="n")
)
leafletProxy %>% addPolyLines(topoData())
input$bays
jest wektorem wybranych plików geojson i jest reaktywny, więc ludzie zmieniają dane wejściowe wyboru wartości aktualizacji na serwerze wewnątrz reaktywnych instrukcji (i obserwują stwierdzenia).
topoData
jest reaktywnym zwraca wybrane pliki geojson. Jeśli dobrze rozumiem, po prostu poszedłeś wkleić różne pliki na górze każdego pojedynczego znaku. The leafletProxy
być może trzeba będzie wejść do środka observe
, Nie jestem pewny.