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

R Shiny Leaflet addCircles报经纬度非空错误但数据无空值如何解决

报错原因
  • 核心问题是你设置的过滤条件匹配不到数据,导致reactive返回的data()是空数据框,此时取data()$lat就会返回空值,触发报错。触发匹配失败的直接原因是日期格式不匹配:

    你的master数据框中date列是带时分秒的字符串/时间类型(示例格式为2000-01-11T12:45:00),但UI端的sliderInput将日期统一转成了只有年月日的Date类型,两者判等时完全匹配不到记录。

  • 次要触发场景:即便日期格式对齐,也可能出现你选中的监测指标(determinand)在所选日期没有上报数据的情况,同样会导致过滤结果为空。
解决方案

按照以下两步修改代码即可:

  1. 统一日期格式:在生成master数据框后,新增一行代码将date列转为和输入组件一致的Date类型:
master$date <- as.Date(master$date)
  1. 绘图前增加空数据判断:修改renderLeaflet部分的代码,数据为空时不调用addCircles,避免报错:
output$mymap <- renderLeaflet({
  plot_data <- data()
  base_map <- leaflet() %>%
    addTiles() %>%
    addRectangles(
      lng1=1.5, lat1=51.3,
      lng2=-1.5, lat2=53.3,
      fillColor = "transparent",
      color="#000000",
      weight=2,
      opacity=1
    )
  # 仅当有匹配数据时绘制点位
  if(nrow(plot_data) > 0){
    base_map <- base_map %>%
      addCircles(
        lng=plot_data$long,
        lat=plot_data$lat, 
        radius=plot_data$value, 
        color="#000000", 
        label=plot_data$label, 
        opacity=1, 
        fillOpacity=0.5
      )
  }
  return(base_map)
})

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.09.26 09:06:03