Leaflet Shiny中触发Polyline点击事件的语法咨询
在Shiny Leaflet中监听Polyline点击事件的正确方法
你遇到的问题是找不对Polyline点击事件的触发语法,其实Polyline的点击事件和多边形一样,都是通过<mapid>_shape_click来监听,你之前尝试的line_click、polyline_click、path_click都不是正确的标识。
修改后的可运行代码如下:
library(shiny) library(leaflet) library(tidyverse) ui <- fluidPage( fluidRow( column( width = 12, leafletOutput("map") ) ) ) server <- function(input, output) { output$map <- renderLeaflet({ leaflet() %>% addTiles() %>% setView(lng = -100, lat = 37, zoom = 5) %>% addPolylines( lng = c(-100, -105), lat = c(32, 42), layerId = "sample_line" # 可选:添加layerId区分不同折线 ) }) observeEvent(input$map_shape_click, { # 查看点击事件的返回数据结构 input$map_shape_click %>% glimpse() # 可选:根据layerId做针对性处理 if(input$map_shape_click$id == "sample_line") { showNotification("成功点击了示例折线!") } }) } shinyApp(ui = ui, server = server)
补充说明:
- 点击Polyline后,
input$map_shape_click会返回一个列表,包含点击的经纬度、对应图层的layerId(如果设置了的话)、图形类型等信息。 - 除了Polyline,多边形(Polygon)、圆形(Circle)这类矢量图形的点击事件,都统一通过
shape_click来监听,无需区分不同图形类型单独设置语法。
内容的提问来源于stack exchange,提问作者anorlondo
相关产品推荐
相关产品推荐

