单击geojson多边形到传单地图时添加的更新d3图表

Posted

技术标签:

【中文标题】单击geojson多边形到传单地图时添加的更新d3图表【英文标题】:Updating d3 chart added when geojson polygon is clicked to leaflet map 【发布时间】:2017-10-10 02:00:03 【问题描述】:

我通过以下方式在一个 Leaflet.js 地图上创建了一个 d3 图表 div:

<div id="map">
    <div class="leaflet-bottom leaflet-left">
        <div id="chart"></div>
     </div>
</div>

leaflet-bottom leaflet-left 将 div 嵌入到地图的左下角。我还添加了 geojson 并想知道当单击不同的 geojson poylgon 时如何更新 div 中的 d3。目前,当我单击一个多边形时,条形图就会出现。但是,当我单击另一个时,它不会更新。为 onEachFeature 函数中的点击执行此操作的 javascript 是:

click: function(e)
           var barnum = [];
           var barcat = []
           /* pm25 holds data to create d3 bar chart */
           for(var i = 0; i < pm25.length; i++)                                                         
               if(feature.properties.BoroCD == pm25[i][1])                                                                   
                   if(data[i].Year.startsWith('Annual'))                                                                        
                       barnum.push(data[i].Mean);                                                                         
                       barcat.push(data[i].Year);
                   
               
           
           var x = d3.scaleLinear()
                     .domain([0, d3.max(barnum)])
                     .range([0, 100])

           d3.select("#chart")
             .selectAll("div")
             .data(barnum)
             .enter().append("div")
             .style("width", function(d)  return x(d) + "px"; )
             .text(function(d)  return d; );
     

单击不同的多边形时如何更新图表?我有完整的代码here

【问题讨论】:

【参考方案1】:

你可以这样使用:

 d3.select("#chart")
         .selectAll("div")
         .data(barnum)
         .enter().append("div")
         .style("width", function(d)  return x(d) + "px"; )
         .text(function(d)  return d; )
         .on("mouseover", function (d) 
                    )
         .on("mouseout", function (d) 
                        
                    )
         .on("mousedown", d => )
         .on("click", scope.select);

希望对您有所帮助。除了点击,您还可以使用其他属性,例如“mouseover”、“mouseout”和“mousedown”

【讨论】:

以上是关于单击geojson多边形到传单地图时添加的更新d3图表的主要内容,如果未能解决你的问题,请参考以下文章