R Shiny Leaflet - Как очистить предыдущий маркер / круг / и т.д. перед добавлением нового - PullRequest
0 голосов
/ 26 сентября 2019

Довольно простой вопрос, но я не могу найти ответ;У меня есть интерактивная карта, которая сохраняет координаты в событии щелчка, я хотел бы, чтобы старые маркеры исчезали, если пользователь нажимает на новую часть карты.

Я пробовал разные вещи, включая списки и если команды, нонет, я читал о «реактивных» элементах, не уверен, как это сделать, примеры, которые я пробовал, не сработали.Любой совет с благодарностью.

library(shiny)
library(leaflet)

shinyApp(ui = fluidPage(leafletOutput("map")), 

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

#initial map output
output$map <- renderLeaflet({
  leaflet() %>% 
    setView(lng =  -6.670972, lat =  54.693751, zoom=12) %>%
    addTiles(options = providerTileOptions(noWrap = TRUE)) %>%
    leafem::addMouseCoordinates()
}) #end render

observeEvent(input$map_click, {
    click <- input$map_click
    print(paste0(click$lat,", ",click$lng))
    x<-data.frame(col=paste0(click$lat,", ",click$lng))
    write.csv(x,"C:/test.csv", row.names = FALSE, quote = TRUE)
    leafletProxy('map') %>%
      addMarkers(lng=click$lng, lat=click$lat, label = paste0(round(click$lat,5),", ",round(click$lng,5)),labelOptions = labelOptions(noHide = T)) %>%
      addCircles(lng=click$lng, lat=click$lat, group='circles', weight=1, radius=300, color='black', fillColor='red',fillOpacity=0.2, opacity=1)
}) #end observe
}) #end app

Приведенный выше код работает, но каждый раз создает новый маркер

...