【问题标题】:Retrieving removed TOPOJSON polygon on clicking a new one单击新多边形时检索已删除的 TOPOJSON 多边形
【发布时间】:2015-07-25 12:46:33
【问题描述】:

我正在尝试使用 leaflettopojson 图层创建交互式地图。我想做以下事情:

1-当点击某个topojson多边形时,它应该被移除。

2-当点击另一个多边形时,它应该被移除并且之前点击的多边形应该被添加回来。

所以基本上在任何时候最多只能有一个多边形不存在。 这是地图的代码块:

function addRegions(map) {
    var regionLayer = new L.TopoJSON();
    $.getJSON('map-developmentregions.topo.json').done(addRegionData);

    function addRegionData(topoData){
        regionLayer.addData(topoData);
        regionLayer.addTo(map);
        regionLayer.eachLayer(handleLayer);
    }

    function handleLayer(layer) {  
        layer.setStyle({
            fillColor : getColor(getNewsCount(layer.feature.properties.REGION)),
            weight: 2,
            opacity: 1,
            color: 'white',
            fillOpacity: 1
        });

        layer.on({
            mouseover : enterLayer,
            mouseout: leaveLayer,
            click: clickAction
        });
    }

    //Here's  the code for clickAction... this is where I suppose the code should be placed

    function clickAction(e) {
        var layer = e.target;
        map.removeLayer(layer);
    }
}

到目前为止,此代码允许我单击 topojson 多边形将其删除,但是一旦单击另一个多边形,我想不出如何检索先前删除的多边形。

我认为我应该将每个多边形与多边形总数进行比较,并在删除当前单击的多边形之前添加缺失的多边形,但我无法执行该操作。

请帮忙。谢谢

【问题讨论】:

    标签: javascript jquery leaflet topojson


    【解决方案1】:

    在您的 clickAction() 函数中,迭代您的数据层并添加要映射的每个特征。完成后,删除当前功能。

    所以,你的点击功能会变成

    function clickAction(e) {
        regionLayer.eachLayer(function(layer){
            map.addLayer(layer)
        });
        var layer = e.target;
        map.removeLayer(layer);
    }
    

    注意:确保将您的变量regionLayer 范围更改为全局变量,以便在您的点击函数中访问它。

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2023-04-06
      • 1970-01-01
      • 2012-08-02
      • 2015-01-16
      • 2011-06-17
      相关资源
      最近更新 更多