添加按钮以从地图中选择或取消选择所有图层,而不是在 R 上使用 Shinny

时间:2021-07-29 20:00:36

标签: r filter leaflet layer

想要添加一个 Button 来选择或不选择所有图层,但不使用 shinny。我尝试创建其他标记,但没有成功。

library(ggplot2)
library(leaflet)
library(sp)
library(dplyr)
library(stringr)
library(htmlwidgets)
library(ggmap)



data <- atmprueba_lleno
data <- data[complete.cases(data),]

创建一个新的空间点数据框

data.SP <-SpatialPointsDataFrame(data[,c(14,15)], data[,-c(14,15)])




data <- data %>% 
  mutate(color = case_when(str_detect(volumen, "Muy Bajo") ~ "red",
                           str_detect(volumen, "Bajo") ~ "darkred",
                           str_detect(volumen, "Regular") ~ "orange",
                           str_detect(volumen, "Bueno") ~ "darkgreen",
                           str_detect(volumen, "Alto") ~ "green",
                           TRUE ~ "a default"))


final_data <- as.data.frame(data)

创建这些组以按银行过滤。

groups = as.character(unique(final_data$adquirente))

mapa_colores = leaflet(final_data) %>% addTiles(group = "OpenStreetMap")#>%
# Filtrando por grupos.
for(g in groups) 
{
  d = final_data[final_data$adquirente == g, ]
  #mapa con pinchetas noramles
  icons_for <- awesomeIcons(
    icon = 'ios-close',
    iconColor = 'black',
    library = 'ion',
    markerColor = d$color
  )
  mapa_colores = mapa_colores %>% addAwesomeMarkers(data = d, lat = d$latitud, lng =d$longitud, icon=icons_for,group = as.character(g),
                                                    popup = paste("<b>","Adquirente:" ,"</b>",d$adquirente,"<br>",
                                                                  "<b>","Provincia:","</b>", d$provincia, "<br>",
                                                                  "<b>","Distrito:","</b>", d$distrito,"<br>",
                                                                  "<b>","Corregimiento","</b>", d$corregimiento, "<br>",
                                                                  "<b>","ID TERMINAL:","</b>", d$terminales, "<br>",
                                                                  "<b>","Ubicación:","</b>", d$location, "<br>",
                                                                  "<b>","Promedio de transacciones:","</b>", d$Promedio, "<br>",
                                                                  "<b>","Volumen transacciones:","</b>", d$volumen,"<br>",
                                                                  "<b>","Latitud:","</b>", d$latitud,"<br>",
                                                                  "<b>","Longitud;","</b>",d$longitud),
                                                    clusterOptions = markerClusterOptions())
   
  
}

这是图层控件,我想添加一些东西来取消选择或选择所有标记。请不要建议带有闪亮的选项。

mapa_funcional <-mapa_colores %>% addLayersControl(overlayGroups = c(groups), options = layersControlOptions(collapsed = FALSE),position='bottomleft')%>%
  htmlwidgets::onRender("
    function(el, x) {
      var updateLegend = function () {
          var selectedGroup = document.querySelectorAll('input:checked')[0].nextSibling.innerText.substr(1);

          document.querySelectorAll('.legend').forEach(a => a.hidden=true);
          document.querySelectorAll('.legend').forEach(l => {
            if (l.children[0].children[0].innerText == selectedGroup) l.hidden=false;
          });
      };
      updateLegend();
      this.on('baselayerchange', e => updateLegend());
    }")%>%
  hideGroup(group= groups)




mapa_funcional

enter image description here

0 个答案:

没有答案