2017-08-16 7 views
0

私ははいとノーとラジオボタンの入力を持っている:光沢のあるアプリのradioButtons?

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

どのように私は選択肢がYESであれば、それはaddCirclesコマンドを検討していることのようにしている場合は、いかなる無視され、server.Rで私の出力を変更するべきではありませんその行?

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に円を追加/削除する:https://rstudio.github.io/leaflet/shiny.html

ノートで

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) 

ルック多角形、長方形、ポリラインの場合は、layerIdaddCirclesに定義し、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') 

私はinput$rd == "Yes"場合、addCircles(...)を考慮すべきであると言って、if文リーフレットコードの内部で使用しています。それは削除ここで私はclearShapesを使用し、:

+0

このようには機能しません。私はエラーが発生しています: 'inheritsのエラー:引数" map "がデフォルトではありません.'でも' observe() 'を試しても同じエラーを返します! –

関連する問題