2017-08-16 64 views
0

我有一個單選按鈕輸入與Yes和No:單選按鈕閃亮的應用程序?

radioButtons("rd", "3 rotor diameter circles:",list("Yes", "No")) 

我應該如何修改我在server.R輸出的方式,如果選擇的是YES,它考慮addCircles命令,如果是沒有忽略那條線?

output$mymap <- renderLeaflet({ 
    infile=input$File 
    if (is.null(infile)) 
     return(NULL) 

    df.20 <- Coor1 
    getColor <- function(Layout) { 
     sapply(Layout$j1, function(j1) { 
     if(j1 < 1) { 
      "red" 
     } else { 
      "green" 
     } }) 
    } 

    icons <- awesomeIcons(
     spin=TRUE, 

     icon = 'star', 
     iconColor = 'lightgray', 
     library = 'fa', 
     markerColor = getColor(df.20) 
    ) 

    leaflet() %>% 
     addProviderTiles("OpenTopoMap", group = "MapQuestOpen.Aerial") %>% 
     addAwesomeMarkers(data = df.20,~long, ~lat, icon=icons, popup = ~as.character(mag), label = ~as.character(Name))%>% 
     addCircles(data = df.20,lng=~long, lat=~lat,radius=~rad,weight = 1,fill = FALSE)%>% 
     addMeasure(primaryLengthUnit='meters',primaryAreaUnit='sqmeters') 
    }) 

回答

1

你應該用單張的proxy方法來做到這一點,並添加/在observer刪除圈子,考慮這個例子:

library("shiny") 
library("leaflet") 

df.20 <- quakes[1:20,] 

ui <- fluidPage(

    radioButtons(inputId = "add_circles", label = "Add circles", choices = c("Yes", "No")), 

    leafletOutput(outputId = "mymap") 

) 

server <- function(input, output, session) { 

    # your initial map 
    output$mymap <- renderLeaflet({ 
    leaflet(df.20) %>% addTiles() %>% addCircles() 
    }) 

    # add or remove circles when clicking the radio button 
    observeEvent(input$add_circles, { 
    if (input$add_circles == "Yes") { 
     leafletProxy(mapId = "mymap", data = df.20) %>% addCircles() 
    } else if (input$add_circles == "No") { 
     leafletProxy(mapId = "mymap") %>% clearShapes() 
    } 
    }, ignoreInit = TRUE) 
} 

shinyApp(ui = ui, server = server) 

https://rstudio.github.io/leaflet/shiny.html

注:這裏我用clearShapes,它刪除還多邊形,矩形和折線,您可以通過addCircles定義layerId只刪除界和使用removeShape

0

你可以試試這個:

leaflet() %>% 
    addProviderTiles("OpenTopoMap", group = "MapQuestOpen.Aerial") %>% 
    addAwesomeMarkers(data = df.20,~long, ~lat, icon=icons, popup = ~as.character(mag), label = ~as.character(Name))%>% 
    {if(input$rd == "Yes")addCircles(data = df.20,lng=~long, lat=~lat,radius=~rad,weight = 1,fill = FALSE)}%>% 
    addMeasure(primaryLengthUnit='meters',primaryAreaUnit='sqmeters') 

我用if語句裏面的小葉代碼,說如果input$rd == "Yes",然後addCircles(...)應予以考慮。

+0

它不工作,這樣。我得到的錯誤:'錯誤繼承:參數「地圖」缺失,沒有default',即使我試圖與'觀察()'和返回同樣的錯誤! –

相關問題