Leaf of Leaf中的下拉过滤器

问题描述 投票:0回答:1

我有一个我在R中创建的传单地图,我想根据列中的字段添加一个下拉过滤器。 JS中的代码看起来很简单,请参见Leaflet dropdown filter示例,但是我无法弄清楚如何调整R的代码。

library(leaflet.extras)

n = c(2, 3, 5) 
long = c(102.1,102.13,102.2) 
lat = c(55,55.1,55.15)
select_cols= c("a","b","c")
 df = data.frame(n, long, lat,select_cols)  


 pal <- colorFactor(c("navy", "red","green"), domain = c("a","b","c"))


 leaflet(df)%>% addTiles()%>%
   addCircleMarkers(lng = long,lat=lat,radius= ~n*2,
color=~pal(select_cols),stroke=F,fillOpacity = 1)

这是添加下拉过滤器的JS代码。

var legend = L.control({position: 'topright'});
legend.onAdd = function (map) {
var div = L.DomUtil.create('div', 'info legend');
div.innerHTML = '<select><option>1</option><option>2</option>        
<option>3</option></select>';
div.firstChild.onmousedown = div.firstChild.ondblclick =         
L.DomEvent.stopPropagation;
return div;
};
legend.addTo(map);

我知道如何添加“show hide layers”功能,但是我有超过20个不同的字段,我认为如果用户可以使用下拉框选择相关字段会更容易。

r leaflet
1个回答
0
投票

如果有人在寻找类似的东西,我找到了一个使用串扰的解决方案。有关示例,请参阅下面的代码。

library(crosstalk)
library(tidyverse)
library(leaflet.extras)

quakes <- quakes %>%
  dplyr::mutate(mag.level = cut(mag,c(3,4,5,6),
  labels = c('3.01-4.00', '4.01-5.00', '5.01-6.00')))

quakes_sd<- SharedData$new(quakes)

map<- leaflet(quakes_sd)%>%addProviderTiles(providers$Esri.WorldTopoMap)%>%  addCircles()

#add filter
bscols(
filter_select("Magnitude Level", "Magnitude Level", quakes_sd, ~mag.level)
  )

bscols(map)
© www.soinside.com 2019 - 2024. All rights reserved.