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

时间:2017-05-11 07:28:48

标签: javascript d3.js leaflet

我在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 个答案:

答案 0 :(得分:0)

您可以使用以下内容:

    if ((p = strchr (line, ' ')))        /* find first ' ' */
        *p = 0;                          /* terminate at p */

    printf ("%s - no tab\n", line);      /* s has no tab */

    if (p)                               /* if terminated  */
        *p = ' ';                        /* restore ' '    */

希望它有所帮助。除了点击,您还可以使用其他属性,例如&#34; mouseover&#34;,&#34; mouseout&#34;和&#34; mousedown&#34;