首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >leaflet geoJSON过滤

leaflet geoJSON过滤
EN

Stack Overflow用户
提问于 2017-04-24 13:04:50
回答 2查看 479关注 0票数 1

我正在使用L.GeoJSON.AJAX加载我的json。我有以下内容来设置标记的样式:

代码语言:javascript
复制
    var weakClusterMarkerOptions = {
      radius: 5,
      fillColor: "#FFFF00",
      color: "#000",
      weight: 2,
      opacity: 1,
      fillOpacity: 0.8
    },
    strongClusterMarkerOptions = {
      radius: 7,
      fillColor: "#CC0000",
      color: "#CC0000",
      opacity: 1,
      fillOpacity: 0.8
    };

  function customizeClusterIcon(feature, latlng) {
    if (feature.properties.strongCl === 'strong') {
      return L.circleMarker(latlng, strongClusterMarkerOptions);
    } else {
      return L.circleMarker(latlng, weakClusterMarkerOptions);
    }
  }

然后,我使用以下内容进行过滤:

代码语言:javascript
复制
function toggleStrength(strength, showLayer) {
    jsonLayer.refilter(function (feature, layer) {
      if (strength == 'all') {
        return true;
      } else {
        if (showLayer) {
          return feature.properties.strongCl === strength;
        }
      }
    });
  }

这里的问题是,当我过滤时,circleMarker的边框消失了,但标记仍然可见,特别是填充颜色。

EN

回答 2

Stack Overflow用户

发布于 2020-03-05 14:11:23

因此,我最终为每个条件(弱条件和强条件)创建了LayerGroups,然后根据筛选器清除并添加相应的组。

代码语言:javascript
复制
toggleStrength = function (layer, showLayer, theMap) {


            switch (layer) {
                case 'weak':
                    if (showLayer) {
                        theMap.addLayer(weakGroup);
                    } else {
                        theMap.removeLayer(weakGroup);
                    }
                    break;
                case 'strong':
                    if (showLayer) {
                        theMap.addLayer(strongGroup);
                    } else {
                        theMap.removeLayer(strongGroup);
                    }
                    break;
                default:
                    clearAll(theMap);
                    if (showLayer) {
                        theMap.addLayer(weakGroup);
                        theMap.addLayer(strongGroup);
                    }
                    break;
            }
        };
票数 0
EN

Stack Overflow用户

发布于 2017-04-24 16:58:39

您的fillColorcolor具有相同的值#CC0000。边界可能就在那里。它只是和填充有相同的颜色。

票数 -1
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/43580149

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档