Использование leaflet
mouse-events, щелчок по шейп-файлу, также вызывает щелчок на карте, поэтому зеленые линии в примере нарисованы немедленно.
Как мне ждать щелчка поодин из шейп-файлов, чтобы удалить нажатую линию и игнорировать щелчки карты для этого, но когда я нажимаю на карту (а не шейп-файл), появляются зеленые линии?
Или как я могу получитьinput$map_shape_click
только?
library(shiny)
library(leaflet)
library(sp)
## DATA
x <- c(1,5,4,8); y <- c(1,3,4,7)
data = sp::SpatialLines(list(
sp::Lines(sp::Line(cbind(x,y)), ID="a"),
sp::Lines(sp::Line(cbind(rev(x)*1.1,y)), ID="b")),
CRS("+proj=longlat +ellps=WGS84 +datum=WGS84 +no_defs"))
data = SpatialLinesDataFrame(data, data = data.frame(
id = 1:length(data)), match.ID = F)
data1 = SpatialLinesDataFrame(data, data = data.frame(
id = 1:length(data)), match.ID = F)
## UI
ui = fluidPage(
leafletOutput("map")
)
## SERVER
server <- shinyServer(function(input, output, session) {
output$map <- renderLeaflet({
leaflet(options = leafletOptions(doubleClickZoom= FALSE)) %>%
addTiles() %>%
addPolylines(data = data, smoothFactor = 10, opacity = 1, color = "blue",
layerId = as.character(data$id),
highlightOptions = highlightOptions(color = "white",
weight = 5, bringToFront = F, opacity = 1)
)
})
observeEvent(input$map_shape_click, {
cat("Shape is Clicked \n")
proxy <- leafletProxy("map")
proxy %>% removeShape("1")
})
observeEvent({ input$map_click }, {
cat("Map Clicked \n")
proxy <- leafletProxy("map")
proxy %>% addPolylines(data = data, smoothFactor = 10, opacity = 1, color = "green",
layerId = as.character(data$id))
})
})
shinyApp(ui, server)