使用下拉菜单向D3路径添加样式

云杉

我有一个正在构建的D3地图。我想通过下拉菜单更改地图。下拉列表将确定一个值,并根据该值更改与D3贴图相关的样式。我怎样才能做到这一点?我已经尝试过尽可能简化我的代码,但是我不知道如何使其工作。在我的示例中,如果您从下拉菜单中选择“布朗克斯”,它将使整个地图变为红色;否则应为蓝色。

谢谢!

柱塞:http ://plnkr.co/edit/ouuArH6mgwvcckNZDa1L?p=preview

代码:

<!DOCTYPE html>
    <meta charset="utf-8">

    <style>
    #boroughs {
      stroke: #aaa;
        stroke-width: 1px;
        fill: #ccc;
        width
    }
    </style>

    <script src="http://d3js.org/d3.v3.min.js" charset="utf-8"></script>

    <body>
        <select id="filter">
            <option>Select A Borough</option>
            <option value="Bronx">Bronx</option>
            <option value="Brooklyn">Brooklyn</option>
            <option value="Manhattan">Manhattan</option>
            <option value="Queens">Queens</option>  
            <option value="Staten_Island">Staten Island</option>
        </select>

    <script>
    var selection;

    d3.select('#filter')
            .on("change", function () {     
                var section = document.getElementById("filter");
                selection = section.options[section.selectedIndex].value;
    });

    console.log("selection:", selection);


    var width = Math.max(960, window.innerWidth),
        height = Math.max(500, window.innerHeight);

    var container = d3.select("body").append("div")
        .attr("id", "container")
        .style("width", width + "px")
        .style("height", height + "px");

      d3.json("nyc.json", function(error, nyb) {

      var projection = d3.geo.mercator()
                        .center([-73.94, 40.70])
                        .scale(50000)
                        .translate([(width) / 2, (height)/2]);

        var path = d3.geo.path()
                .projection(projection);

        var map = container.append("svg")
            .attr("id", "boroughs")
            .style("width", width + "px")
        .style("height", height + "px")
            .selectAll(".state")
            .data(nyb.features)
            .enter().append("path")
            .attr("class", function(d){ return d.properties.name; })
            .attr("fill", function(d){
              if (selection == "Bronx"){ return "#ff0000";}
              else { return "#0000ff";}
            })
            .attr("d", path);

        });

    </script>
    </body>
    </html>
西里尔·谢里安(Cyril Cherian)

给类指定路径,使它们属于下拉框上的该类别:

var map = container.append("svg")
    .attr("id", "boroughs")
    .style("width", width + "px")
.style("height", height + "px")
    .selectAll(".state")
    .data(nyb.features)
    .enter().append("path")
    //this set the class
    .attr("class", function(d){ return "state " + d.properties.borough.replace(" ", "_"); })

然后在选择时执行:

d3.select('#filter')
        .on("change", function () {     

            var section = document.getElementById("filter");

            selection = section.options[section.selectedIndex].value;

            d3.selectAll(".state").style("fill", "blue");//reset all to blue


            d3.selectAll("."+selection.replace(" ", "_")).style("fill", "red"); //color the selected index
});

这里的工作代码

希望这可以帮助!

本文收集自互联网,转载请注明来源。

如有侵权,请联系[email protected] 删除。

编辑于
0

我来说两句

0条评论
登录后参与评论

相关文章

来自分类Dev

将标签添加到D3路径

来自分类Dev

D3路径过渡方向

来自分类Dev

D3路径过渡方向

来自分类Dev

d3路径:为什么在.data([...])中使用方括号

来自分类Dev

路径相交会导致部分路径消失[D3路径生成]

来自分类Dev

如何找到现有D3路径的投影

来自分类Dev

一个接一个绘制D3路径

来自分类Dev

群组中的D3路径在Firefox中不显示,仅在Chrome中显示

来自分类Dev

如何使用Amazonica库在Clojure中设置S3路径样式?

来自分类Dev

d3 SVG上的下拉菜单

来自分类Dev

禁用下拉菜单中的选项 - d3

来自分类Dev

使用d3从“多个”下拉菜单中找到用户选择的选项?

来自分类Dev

使用折线图 d3 中的下拉菜单重新缩放 x 轴

来自分类Dev

如何使d3路径笔画向内弯曲?就像“基数封闭”插值法的反面一样

来自分类Dev

如何使d3路径笔画向内弯曲?就像“基数封闭”插值法的反面一样

来自分类Dev

下拉菜单向右移动

来自分类Dev

样式下拉菜单wordpress

来自分类Dev

隐藏样式下拉菜单

来自分类Dev

限制用户可以在 D3 下拉菜单中选择的选项数量

来自分类Dev

使用jQuery快速设置js下拉菜单的样式

来自分类Dev

CSS下拉菜单使用错误的样式

来自分类Dev

Matlab:如何使用帮助下拉菜单向用户显示类似于Matlab的功能输入

来自分类Dev

下拉菜单无法使用剪辑路径 css 工作

来自分类Dev

Javascript下拉菜单添加

来自分类Dev

使用s3路径的子字符串进行分区

来自分类Dev

CSS下拉菜单向左浮动的问题

来自分类Dev

使用HTML在表格中添加下拉菜单

来自分类Dev

使用jQuery更改/添加Bootstrap下拉菜单

来自分类Dev

如何使用我当前的 CSS 添加下拉菜单?

Related 相关文章

热门标签

归档