2017-08-16 3 views
0

Ich habe einen Radiobuttons Eingang mit Ja und Nein:RadioButtons in glänzender App?

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

Wie soll ich, dass meine Ausgabe in server.R, in einer Art und Weise ändern, wenn die Wahl JA ist, den addCircles Befehl prüfen und wenn keine ignorieren diese Linie?

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') 
    }) 

Antwort

1

Sie proxy Methode Beilage des das zu tun, verwenden sollten, und Hinzufügen/Entfernen von Kreisen in einem observer, dieses Beispiel betrachten:

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) 

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

Hinweis: hier verwendete ich clearShapes, entfernen Auch Polygone, Rechtecke und Polylinien können Sie entfernen, indem Sie layerId in addCircles definieren und removeShape verwenden.

0

Sie konnten dieses versuchen:

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') 

ich habe if-Anweisung innerhalb des Faltblatts Code verwendet wird, zu sagen, dass, wenn input$rd == "Yes", dann addCircles(...) berücksichtigt werden sollten.

+0

Es funktioniert nicht so. Ich erhalte einen Fehler: 'Error in erben: Argument" map "fehlt, ohne Default', selbst habe ich versucht mit' observe() 'und gebe den gleichen Fehler zurück! –

Verwandte Themen