Shiny - R - leaflet.extras - Удалить загруженный KML - PullRequest
0 голосов
/ 24 октября 2018

Я экспериментирую с пакетом R, Shiny и lealflet вместе с дополнительным пакетом leaflet.extras.Мне удалось создать простую карту, загрузив пользовательский файл kml, но я не знаю, как удалить загруженный файл kml.Я использую следующий код для обновления существующей карты:

observe({
if (is.null(input$file)) return()
file.remove(dir("www",pattern = "*.*",full.names = TRUE))
file.copy(input$file$datapath, "www/carico.kml")
kml<-read_file("www/carico.kml")
leafletProxy("gvis", session) %>%
addKML(kml,layerId="gino")
})

Я наблюдаю событие ввода $ file, где я загружаю файл kml.Чтобы не использовать временные файлы, я всегда копирую временный файл в одно и то же место после очистки каталога www и всегда добавляю один и тот же kml на свою карту.Но проблема в том, как удалить один или все слои kml после их загрузки?Я пытался использовать clearmarkers (), но, похоже, ничего не делает.Любая идея?Вот полный код, указывающий на некоторые пользовательские расположения библиотек и общедоступные службы wms.

library(shiny)
library(leaflet)
library(leaflet.extras)
library(readr)
# Define UI for data download app ----
ui <- fluidPage(

  # App title ----
  titlePanel("Mappe"),

  # Sidebar layout with input and output definitions ----
  sidebarLayout(

    # Sidebar panel for inputs ----
    sidebarPanel(

      # Input: Choose dataset ----
      selectInput("mappab", "Scegli un wms",
                  choices = c("AGEA 2011RGB", "AGEA 2011IR", "AGEA 2008RGB", "AGEA 2008IR", "STORICA REGIONALE","CTR MULTISCALA")),


      sliderInput("TOSM","Trasparenza OSM",min=0,max=1,step=0.1,value=0.30),
      fileInput("file","Cariza un kml"),
      actionButton("button", "Cancella tutti i kml")

    ),

    # Main panel for displaying outputs ----
    mainPanel(

      leafletOutput("gvis",height=800),
      textOutput("Coordinate")

    )

  )
)

# Define server logic to display and download selected file ----
server <- function(input, output,session) {
  observeEvent(input$button, {
    leafletProxy("gvis", session) %>%
      removeMarker("gvis","gino")


  })

  observe({
    if (is.null(input$file)) return()
    file.remove(dir(  
      "www", 
      pattern = "*.*", 
      full.names = TRUE
    ))
    file.copy(input$file$datapath, "www/carico.kml")
    kml<-read_file("www/carico.kml")
    leafletProxy("gvis", session) %>%
      addKML(kml,layerId="gino")
    })
  # Table of selected dataset ----
  output$gvis <- renderLeaflet({


    if (input$mappab=='AGEA 2011RGB'){
      mappa='http://servizigis.regione.emilia-romagna.it/wms/agea2011_rgb?'
      layer='Agea2011_RGB'}
    if (input$mappab=='AGEA 2011IR'){
      mappa='http://servizigis.regione.emilia-romagna.it/wms/agea2011_ir'
      layer='Agea2011_IR'}
    if (input$mappab=='AGEA 2008RGB'){
      mappa='http://servizigis.regione.emilia-romagna.it/wms/agea2008_rgb?'
      layer='Agea2008_RGB'}
    if (input$mappab=='AGEA 2008IR'){
      mappa='http://servizigis.regione.emilia-romagna.it/wms/agea2008_ir?'
      layer='Agea2008_IR'}
    if (input$mappab=='STORICA REGIONALE'){
      mappa='http://servizigis.regione.emilia-romagna.it/wms/carta_storica_regionale_1853'
      layer='carta_storica_regionale_1853'}
    if (input$mappab=='CTR MULTISCALA'){
      mappa='http://servizigis.regione.emilia-romagna.it/wms/dbtr_ctrmultiscala'
      layer='DBTR_CtrMultiscala'}



      leaflet()  %>%
        flyToBounds(mappa,lng1=12, lat1=44,lng2=13,lat2=45)%>%

        addWMSTiles(
          mappa,
          layers = layer,
          options = WMSTileOptions(format = "image/png", transparent = TRUE) 
        ) %>% addSearchOSM() %>% addControlGPS(options=gpsOptions(position = "topleft", activate = TRUE, 
                                                                  autoCenter = TRUE, maxZoom = 17, 
                                                                  setView = TRUE)) %>%
        addTiles(options=tileOptions(opacity=input$TOSM))%>%
        addReverseSearchOSM(showSearchLocation = TRUE, showBounds = FALSE,showFeature = TRUE, fitBounds = TRUE, displayText = TRUE,group = NULL)%>%
        addMeasure(primaryLengthUnit="meters",secondaryLengthUnit="meters",primaryAreaUnit="sqmeters",secondaryAreaUnit="hectares")%>%
      addLayersControl()


  })

  output$Coordinate <- renderText({
 print(kml)
  })
}

# Create Shiny app ----
shinyApp(ui, server)
...