如何按名称获取topojson的几何(属性值)?

时间:2015-03-07 03:53:16

标签: javascript topojson

我是TopoJson的新手,我有一些看起来像这样的数据......

{"type":"Polygon","properties":{"name":"Arkansas"},"arcs":[[0,1,2,3,4,5]]}

我想说输出阿肯色州,所以我提出以下(我使用underscore.js)......

var collection = topojson.feature(us, us.objects.subunits).features;
  var final = [];
  _.forEach(collection, function(item){
    if(item.properties.name == "Arkansas"){
      final.push(item);
    }
  });
  svg.selectAll(".subunit")
     .data(final)
     .enter()
     .append("path")
     .attr("class", function(d) { return "subunit " + d.id; })
     .attr("d", path);

这很好但是不是更方便吗?有没有类似us.objects.subunits [“Arkansas”]我能做什么?

1 个答案:

答案 0 :(得分:1)

(从我的手机和内存中,尝试以下内容)

通常,要走的路是这样的:

var final = topojson.feature(us, us.objects.subunits).features;
  svg.selectAll(".subunit")
      .data(final)
    .enter()
      .append("path")
      .attr("class", function(d) { return "subunit " + d.id; })
      .attr("d", function(d){ if(d.properties.name == "Arkansas"){ return d }  });

过滤直接在.attr('d', function(d){…})范围内。如果不起作用,请尝试.attr('d', function(d, path){…})并返回路径。