Shiny Leaflet地图sliderInput日期更改时圆形标记无响应问题求助
问题修复方案
你的代码存在2个核心问题导致地图标记没有按预期更新,对应修复方法如下:
1. 地图标记重叠未清理
你每次通过leafletProxy添加新的圆形标记时,没有删除上一次筛选生成的旧标记,不同筛选条件的标记重叠在一起,看起来就像没有更新。
修复方法:修改Add_Circles函数
给所有圆形标记设置统一的分组ID,每次添加新标记前先清空该分组下的旧内容:
Add_Circles = function(data, group, daterange){ endDate = daterange[2] startDate = daterange[1] data = data %>% filter(Common_Name %in% group, Strand_Date>=startDate & Strand_Date<=endDate) Common_Name = c("California Sea Lion", "Northern Fur Seal","Guadalupe Fur Seal", "Common Bottlenose Dolphin","Short-Beaked Common Dolphin","Striped dolphin", "North Pacific Right Whale","Gray Whale") my_palette = c("#FF0000FF", "#FFBF00FF", "#80FF00FF", "#00FF40FF", "#00FFFFFF", "#0040FFFF", "#8000FFFF", "#FF00BFFF") factpal2 = colorFactor(palette=my_palette, levels=Common_Name) leafletProxy("mymap") %>% clearGroup("strand_circles") %>% # 新增:清空上一次的标记 addCircleMarkers(data=data, color= ~factpal2(Common_Name), fillOpacity = 1, weight = 0.5, stroke= 'none', label=paste( data$Strand_Date,",", "Rehab Center:",data$Program,",", data$Common_Name,""), popup=paste( "Stranding Date:",data$Strand_Date,"<br>", "Rehab Center:", data$Program,"<br>", "Species:", data$Common_Name,"<br>", "County:", data$Stranding_County,"<br>", "City:", data$Stranding_City,"<br>"), lng=~Longitude, lat=~Latitude, group = "strand_circles") # 新增:给标记设置统一分组 }
2. 表格逻辑错误(额外问题)
你当前的表格代码过滤数据后没有保存结果,输出的永远是全量原始数据,和筛选条件无关。
修复方法:修改server中的表格渲染逻辑
output$mytable = DT::renderDataTable({ daterange = input$Strand_Date endDate = daterange[2] startDate = daterange[1] # 把过滤后的结果赋值给新变量 filtered_data <- Stranding_Data2 %>% filter(Common_Name %in% input$Common_Name, Strand_Date>=startDate & Strand_Date<=endDate) datatable(filtered_data) })
- 额外注意:如果原始数据中
Strand_Date字段为字符串格式,可在数据清理步骤补充mutate(Strand_Date = as.Date(Strand_Date))完成格式转换,避免筛选失效。
修改完成后,调整日期滑块和物种选项时,地图和表格都会同步更新。
内容的提问来源于stack exchange,提问作者Megan Hepner
相关产品推荐
相关产品推荐

