/ / selectize - błyszczące, akcja dla wielu wyborów - r, błyszczące, selectize.js

selectize - błyszczące, akcja dla wielu wyborów - r, shiny, selectize.js

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 № 1

Nie 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.