You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

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

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.08.22 21:57:18