如何在d3中仅渲染topojson的一部分

时间:2017-04-28 09:57:08

标签: dictionary d3.js topojson

我有一个topojson文件,其中包含印度的所有地区。我想只渲染特定州的地区。我无法弄清楚如何做到这一点。

这是我的初始代码(它呈现所有区域):

    var district_geo_obj = topojson.feature(district, district.objects.india_district);
    var district_projection = d3.geoMercator()
        .fitSize([width/2, width/2], district_geo_obj);
    var district_path = d3.geoPath().projection(district_projection);

    map_svg.selectAll("path")
        .data(district_geo_obj.features)
        .enter().append("path")
        .attr("d", district_path)
        .attr('class', 'map-margin-const')
        .style('fill', function(d) {
            return 'red';
        })

这是topojson文件的screnshot

This is the screnshot of the topojson file

1 个答案:

答案 0 :(得分:-1)

  var districts = ["aaa", "bbb", "ccc", "ddd"];

  map_svg.selectAll("path")
    .data(district_geo_obj.features)
    .enter().append("path")
    .attr("d", district_path)
    .attr('class', 'map-margin-const')
    .style('fill', function(d) {
        return 'red';
    }).style("stroke-width", function (d, i) {
                    if (districts.indexOf(d["properties"]["NAME_1"]) > -1 ) return "1px";   // Not sure about the syntax. But this should do
                    else return "0px";
                })