Добавление маркеров с помощью флажка Leaflet / R - PullRequest
0 голосов
/ 20 декабря 2018

Я пытаюсь добавить маркеры на мою интерактивную карту Leaflet, если пользователь поставил галочку.Тем не менее, я не могу заставить checkbox-внешний вид работать в функции renderLeaflet, но я могу в функции renderPlot.

Мой код, который работает, выглядит следующим образом:

ui <- fluidPage(

  sidebarLayout(
    sidebarPanel(
    checkboxInput('check1','Show Counties', value = TRUE)),

  mainPanel(
    # I'm aware that this should be changed to leaftletOutput, when used 
    # with the in the second code snippet below
    plotOutput("mymap")

  ),

  position = 'right'

  )

)

server <- function(input, output) {

  output$mymap <- renderPlot({

    if (input$check1){
      hist(rnorm(10))
    } else {
      hist(rnorm(100))
    }

  })

 }

shinyApp(ui = ui, server = server)

Та же логика не работает в Leaflet, и я был бы очень признателен за информацию о том, как изменить приведенный ниже код.Я знаю, что у вас нет доступа к двум переменным: USstates или coor , но я надеялся, что можно будет указать на ошибку, потенциально с точки зрения синтаксической ошибки.Функция вывода выглядит следующим образом:

output$mymap <- renderLeaflet({

  if (input$check1 == TRUE){
    leaflet(USstates) %>%
      addTiles() %>%
      addPolygons(color = 'navy',
                  opacity = 1.0,
                  weight = 1) %>%
      addMarkers(lng = coor[,1],lat = coor[,2])
  } else {
    leaflet(USstates) %>%
      addTiles() %>%
      addPolygons(color = 'navy',
                  opacity = 1.0,
                  weight = 1)
  }

})

1 Ответ

0 голосов
/ 20 декабря 2018

Я придумал решение причины сразу после того, как создал этот пост.Решение состояло в том, чтобы обернуть код листовки в реактивную функцию и вызвать его в функции renderLeaflet.Решение заключается в следующем:

server <- function(input, output) {
  display <- reactive({
    if (input$check1){
      leaflet(USstates) %>%
        addTiles() %>%
        addPolygons(color = 'navy',
                    opacity = 1.0,
                    weight = 1) %>%
        addMarkers(lng = coor[,1],lat = coor[,2])
    } else {
      leaflet(USstates) %>%
        addTiles() %>%
        addPolygons(color = 'navy',
                    opacity = 1.0,
                    weight = 1)
    }
  })

  output$mymap <- renderLeaflet({
    display()
  })
}
...