Масштабирование листовок на основе динамического выбора selectInput - PullRequest
0 голосов
/ 31 октября 2018

вот фиктивный фрейм данных DF

Location <- c("A","B","C","D","E")
OwnBicycle <- c("Yes","Yes","Yes","No","No")
Latitude <- c(-0.091702,-3.218834,-2.856487,-1.300799,0.498922)
Longitude <- c(34.767958,40.116147,38.945562,36.785946,35.308054)
DF <- data.frame(Location,OwnBicycle,Latitude,Longitude)

loc <- unique(DF$Location)
ownbike <- unique(DF$OwnBicycle)

Часть основного кода в пользовательском интерфейсе.

selectInput("loc", label = "Location", choices=loc, selected = "A")
leafletOutput("mymap", height = 500)

Сервер

# reactive for selectIpout
filtered <- reactive({
  DF[DF$Location == input$loc,]
})

#leafletProxy 
observe(leafletProxy("mymap", data = filtered()) %>%
          clearMarkers()%>%
          addMarkers(radius =3)
)

В leafletObserver на приборной панели Shiny я бы хотел, чтобы карта увеличивалась до местоположения B, когда пользователь выбирает вариант B из selectInput. Я попробовал следующие шаги, выделенные здесь , но для этого у него была кнопка, у которой уже был инициализирован лат / лот?

1 Ответ

0 голосов
/ 02 ноября 2018

Вам нужно использовать flyTo с leafletProxy. Вы можете настроить аргумент zoom в соответствии с вашими потребностями. Я сделал некоторые улучшения в вашем коде, поэтому он немного отличается от вашего. -

library(shiny)
library(leaflet)

shinyApp(
  ui = fluidPage(
    selectInput("loc", label = "Location", choices=loc, selected = "A"),
    leafletOutput("mymap", height = 500)
  ),
  server = function(input, output) {
    filtered <- reactive({
      DF[DF$Location == input$loc,]
    })

    output$mymap <- renderLeaflet({
      leaflet() %>% addTiles()
    })

    mymap_proxy <- leafletProxy("mymap")

    observe({
      fdata <- filtered()
      mymap_proxy %>%
        clearMarkers() %>%
        addMarkers(lng = fdata$Longitude, lat = fdata$Latitude) %>%
        flyTo(lng = fdata$Longitude, lat = fdata$Latitude, zoom = 10)
    })
  }
)
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...