2017-08-30 3 views
1

J'ai résolu mon problème en tant que Lauren. Changing styles when selecting and deselecting multiple polygons with Leaflet/Shiny La seule différence est que j'utilise des polylignes au lieu de polygones. Je veux sélectionner plusieurs polylignes et les désélectionner à nouveau. Mais ça ne marche pas ... on supprime les resélectionnés de la table mais pas de la carte et après qu'une ligne a été supprimée de mes lignes sélectionnées je ne peux plus la sélectionner.Sélectionner et désélectionner des polylignes dans Shiny/Leaflet

Quelqu'un peut-il m'aider s'il vous plaît!

Data

Voici mon code:

library(shiny) 
library(leaflet) 
library(geojsonio) 

url <- "pathTogeojson" 

geojson <- geojsonio::geojson_read(url, what = "sp") 

shinyApp(
    ui <- fluidRow(
     leafletOutput("map")), 

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

    click_list <- reactiveValues(ids = vector()) 

    output$map <- renderLeaflet({ 
     leaflet() %>% 
     addTiles() %>% 
     setView(lng=16.357795000076294, lat=48.194883921677935, zoom = 15) %>% 
     addPolylines(data=geojson, layerId = [email protected]$name_1, group = "selected", color="red", weight=3,opacity=1) 
    }) 

    observeEvent(input$map_shape_click, { 

     click <- input$map_shape_click 
     proxy <- leafletProxy("map") 
     click_list$ids <- c(click_list$ids, click$id) 

     sel_lines <- geojson[[email protected]$name_1 %in% click_list$ids, ] 

     if(click$id %in% [email protected]$id) 
     { 
     nameMatch <- [email protected]$name_1[[email protected]$id == click$id] 
     click_list$ids <- click_list$ids[!click_list$ids %in% click$id] 
     click_list$ids <- click_list$ids[!click_list$ids %in% nameMatch] 

     proxy %>% removeShape(layerId = click$id) 
     } 
     else 
     { 
     proxy %>% addPolylines(data = sel_lines, layerId = [email protected]$id, color="#6cb5bc", weight=5,opacity=1) 
     } 
    }) 
    }) 

Répondre

0

J'ai trouvé la solution par mes données own..my et mon incompréhension étaient le problème. Cela ne fonctionne que lorsque toutes les colonnes utilisées sont de type character ... donc j'ai dû faire une conversion de type avec as.character()