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

googleway包多边形ID定义及Shiny编辑事件无响应问题求助

问题:Shiny中googleway可编辑多边形的observeEvent无响应

问题详情

当前调试的Shiny服务器代码如下:

vertices <-
structure(list(lat = c(20.99, 20.99, 21.01, 21.01, 20.99), lng = c(83.99, 
84.01, 84.01, 83.99, 83.99)), class = "data.frame", row.names = c(NA, 
-5L))

server <- function(input, output, session) {
 
  output$map <- renderGoogle_map({
    google_map(key = apikey,
               map_type = "satellite",
               location = c(21.92, 85.43),
               zoom = 14
               ) %>%
      add_polygons(vertices,lat = "lat", lon = "lng",editable = T)
  })

  observeEvent(input$map_polygon_edited, {
    edited_data <- input$map_polygon_edited
    print(edited_data)
  })
}

目前地图能正常显示卫星视图和可拖拽顶点的矩形,但observeEvent(input$map_polygon_edited)完全无响应。尝试在add_polygons()中添加id参数,但根据googleway文档,id需要传入列名,不清楚观察者事件中对应的标识该如何匹配。

解决方案

  • 触发多边形编辑事件的核心前提:必须通过id参数为多边形绑定数据框中的唯一标识列,哪怕只有一个多边形也需要设置。
  • 具体步骤:
    1. 给顶点数据框新增一个唯一标识列,比如poly_id:
      vertices$poly_id <- 1  # 单个多边形时设置固定值即可
      
    2. 在add_polygons中指定id = "poly_id",将多边形与标识列绑定:
      add_polygons(vertices, lat = "lat", lon = "lng", editable = T, id = "poly_id")
      
    3. 保持observeEvent(input$map_polygon_edited)的监听逻辑,此时编辑多边形后该事件会正常触发。

修改后的完整代码

vertices <-
structure(list(lat = c(20.99, 20.99, 21.01, 21.01, 20.99), lng = c(83.99, 
84.01, 84.01, 83.99, 83.99)), class = "data.frame", row.names = c(NA, 
-5L))

# 添加唯一标识列
vertices$poly_id <- 1

server <- function(input, output, session) {
 
  output$map <- renderGoogle_map({
    google_map(key = apikey,
               map_type = "satellite",
               location = c(21.92, 85.43),
               zoom = 14
               ) %>%
      add_polygons(vertices, lat = "lat", lon = "lng", editable = T, id = "poly_id")
  })

  observeEvent(input$map_polygon_edited, {
    edited_data <- input$map_polygon_edited
    print(edited_data)
    # 可在此处进一步处理编辑后的顶点数据
  })
}

补充说明

编辑触发后,input$map_polygon_edited会返回一个列表,包含修改后的多边形顶点坐标(coordinates字段)以及对应的id值,你可以根据业务需求提取和处理这些数据。

内容的提问来源于stack exchange,提问作者Lazarus Thurston

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.06.29 20:23:12