Как создать Leaflet Proxy в наблюдаемом событии () для checkboxGroup в R Shiny - PullRequest
0 голосов
/ 30 марта 2020

Я немного новичок в R Shiny, и я пытаюсь сделать простую, динамичную c веб-карту, на которой обычные пользователи могут найти, где переработать различные материалы в Восточном Кентукки. На панели боковой панели в пользовательском интерфейсе я создал флажок «Группа», чтобы пользователь мог фильтровать через центры переработки, что позволяет перерабатывать материалы по своему выбору (в данном случае это центры переработки стекла И / ИЛИ алюминия, И / ИЛИ пластика). ). Флажок отображается, когда вы запускаете приложение, но я получаю пустую панель инструментов, где должна быть карта. Что-то не так со стороны сервера в приложении, когда я пытаюсь создать карту прокси в функции наблюдающей (), но я озадачен тем, что я делаю неправильно.

Вот ссылка на мой данные с именем RE.csv: https://github.com/mallen011/Leaflet_and_Shiny/blob/master/Shiny%20Leaflet%20Map/csv/RE.csv

Вот полный, оригинальный код приложения Shiny: https://github.com/mallen011/Leaflet_and_Shiny/blob/master/Shiny%20Leaflet%20Map/app.R

Вот данные, читайте в R:

RE <- read.csv("C:/Users/username/Desktop/GIS/Shiny Leaflet Map/csv/RE.csv")
RE$y <- as.numeric(RE$y)
RE$x <- as.numeric(RE$x)
RE.SP <- SpatialPointsDataFrame(RE[,c(7,8)], RE[,-c(7,8)])
RE$popup <- paste("<p><h2>", RE$name,"</p></h2>",
              "<p>", RE$sector,"</p>",
              "<p>", RE$address,"</p>",
              "<p>", RE$phone,"</p>")

Вот пользовательский интерфейс (dashboardSidebar - это место, где расположен вход checkboxGroup ()):

ui <- dashboardPage(
 dashboardHeader(),
 dashboardSidebar(checkboxGroupInput(inputId = "RE_check", 
                                 label = h3("Recycleables"), 
                                 choices = list("Glass" = RE$GL, "Aluminum" = RE$AL, "Plastic" = RE$PL),
                                 selected = 0)
                                  ),
  dashboardBody(
       fluidRow(box(width = 12, leafletOutput(outputId = "map"))),
       leafletOutput("map")
      )
       )

А вот сервер:

server <- function(session, input, output) {
  output$map <- renderLeaflet({
                leaflet() %>% 
            addMarkers(data = RE,
                       lng = ~x, lat = ~y, 
                       label = l apply(RE$popup, HTML),
                       group = "recycle") %>% 

})

И это тот раздел, с которым у меня проблемы на стороне server.r. Я не уверен, что я делаю не так, но я знаю, что что-то не так с моим наблюдением (). То, что я пытаюсь выполнить sh, - это событие наблюдения, в котором, если пользователь проверяет стекло в группе флажков, то появляется каждый центр переработки, имеющий значение «да» для переработки стекла. Просто подумайте, как go получить этот результат.

observeEvent({
RE_click <- input$map_marker_click
if (is.null(RE_click))
  return()

if(input$RE_check == "Glass"){
  leafletProxy("map") %>% 
    clearMarkers() %>% 
    addMarkers(data = RE_click,
               lat = RE$y,
               lng = RE$x,
               popup = RE$popup)
}

})}

shinyApp(ui = ui, server = server)

Я уверен, что ответ на мою дилемму намного проще чем я делаю это, но я был бы признателен за любую помощь. Оставайтесь в безопасности там! Спасибо

...