Я экспериментирую с пакетом 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)