Select 基于节点名称的 GeoJSON 特征

Select feature from GeoJSON based on a node name

我正在使用 D3js 与力布局和 Leaflet 地图进行地理数据可视化。在其他用户的帮助下,我已经能够构建第一个版本。现在我正在添加一个 geojson 路径,我想根据我单击的节点的名称显示一个特定的功能,但是现在当我单击一个节点时,所有路径都会显示出来。

这就是我想要的:

这是我拥有的:

我尝试在单击节点时调用的函数中迭代路径名称:

        function connectedNodes() {
    var poligono = g.selectAll("path");
    var result = datosPoli.features;
    for (var i = 0; i < result.length; i++) {
        var poligonoNombre = result[i].properties.Name;
    }

    if (toggle == 0) {
  //Reduce the opacity of all but the neighbouring nodes
  d = d3.select(this.parentNode).datum();
        r = d3.select(this).datum();

      nodesAll
    .transition()
    .style("opacity", function (o) {
                return neighboring(d, o) | neighboring(o, d) ? 1 : 0;
            })
  ;

  lineas
    .transition()
    .style("opacity", function (o) {
                return d.index==o.source.index | d.index==o.target.index ? 0.5 : 0;
            })
  ;

        poligono
            .filter(function(d){
                for (var i = 0; i < result.length; i++) {
                    var poligonoNombre = result[i].properties.Name;
                    return poligonoNombre;
                }
                return d.id === poligonoNombre;
            })
            .attr('fill-opacity', 1)
        ;

        text
            .transition()
            .style('opacity', function(o){
                    return neighboring(d, o) | neighboring(o, d) ? 1 : 0;
        })

        toggle = 1;

} else {
        // devuelve los nodos a la normalidadlos links invisibles
  nodesAll
    .transition()
    .style("opacity", 1)
        ;

  lineas
    .transition()
    .style("opacity", 0)
  ;

        poligono
            .attr("fill-opacity", 0)
        ;

        text
            .transition()
            .style('opacity', 1)
        ;

  toggle = 0;
}
}

但运气不好。

我在将完整代码上传到 blockbuilder 时遇到问题,因此我将其上传到此处:https://drive.google.com/file/d/1vp1l9brJ0MzLX3zV4-kyB6-IJEtvFiyB/view?usp=sharing

以下是更好的多边形检查,但看起来图例中的 none 个名称在多边形

的名称中找到

最好更改 opacity 以防您想要描边多边形。同时更改创建 red 多边形

的位置
poligono
    .filter(function (o) { return d.id === o.properties.Name; })
    .attr('opacity', 1);

或者一个班轮

poligono.attr('opacity', o => d.id === o.properties.Name ? 1 : 0);