2016-06-16 4 views
0

Я хочу, чтобы пользователь мог выбрать, будут ли определенные маркеры нанесены на карту Листовки. Это зависит от ввода $ competitorchoice, который может быть ИСТИНА или ЛОЖЬ. Я хочу, чтобы определенные маркеры отображались только только, когда это значение имеет значение ИСТИНА. Я хотел бы использовать, если условие и addMarkers в пределах этого, если, но это не работает ...Блестящий + листок: как добавить addMarkers в зависимости от пользовательского ввода

Пример кода можно увидеть ниже:

output$mymap<-renderLeaflet({ 
    leaflet(data=get(paste(input$type,".locations",sep = ""))[[input$stations]]) %>% 
    addMarkers(~lon, ~lat,data=terminals,icon=termi,popup = ~name_terminal)) 

Далее, я хочу, чтобы добавить условный addMarkers.It является вызывается только при вводе $ competitorchoice TRUE ...

+0

Вы должны показать нам, что вы сделали, а затем мы можем помочь. Скорее всего, если вы не используете оператор%>% pipe, это легко сделать. –

+0

Я отредактировал свое оригинальное сообщение, вы можете посмотреть? – nico

ответ

1

Поскольку вы не представили воспроизводимый пример, я основывал это на наборе учебных пособий по лифту. Один из подходов состоит в том, чтобы иметь флажок, который является реактивным. Вот моя попытка, когда маркеры можно включить/отключить, щелкнув поле.

library(shiny) 
library(leaflet) 

ui <- fluidPage(
    leafletOutput("mymap"), 
    p(), 
    # Add checkboxInput() to turn markers on and off: 
    checkboxInput("markers", "Turn On Markers", FALSE) 
) 

server <- function(input, output, session) { 
    # Some random data: 
    dat <- data.frame(long = rnorm(40) * 2 + 13, lat = rnorm(40) + 48) 

    # observe() looks for changes in input$markers and adds/removes 
    # markers as necessary: 
    observe({ 
    proxy <- leafletProxy("mymap", data = dat) 
    proxy %>% clearMarkers() 
    if (input$markers) { 
     proxy %>% addMarkers() 
    } 
    }) 

    # Render basic map with any element that will not change. 
    # Note: you can change the starting zoom/positioning/et cetera 
    # as appropriate: 
    output$mymap <- renderLeaflet({ 
    leaflet(dat) %>% addProviderTiles("Stamen.TonerLite", options = providerTileOptions(noWrap = TRUE)) 
    }) 
} 

shinyApp(ui, server) 
Смежные вопросы