d3如何将geojson中的ID添加到路径中

时间:2014-05-23 16:12:37

标签: javascript svg d3.js

我有以下geojson文件代表印度的每个州,作为一个简单的例子,一个声明就是这样(为简洁起见,删除了坐标):

    {
"type": "FeatureCollection",
"features": [
{ "type": "Feature", "properties": {}, "id":"AndhraPradesh", "geometry": { "type": "MultiPolygon", "coordinates": [ ......

我正在尝试让生成的SVG的路径具有其geojson形状的id,以便我有类似的东西:

<svg width="600" height="600"><g id="india"><path id="AndhraPradesh" d="..."></path>

以下内容及其变体似乎不起作用,我找不到将路径与id明确关联的示例,因此我不确定秘密可能是什么。

  var w = 600;
  var h = 600;
  var proj = d3.geo.mercator();
  var path = d3.geo.path().projection(proj);
  var t = proj.translate(); // the projection's default translation
  var s = proj.scale() // the projection's default scale

  var map = d3.select("body").append("svg")
      .attr("width", w)
      .attr("height", h)
      .call(initialize);

  var india = map.append("g")
      .attr("id", "india");

  d3.json("india_states.geojson", function (json) {
    india.selectAll("path")
      .data(json.features)
      .enter().append("path")
      .attr("d", path)
      .attr("id", id)
  });

任何帮助都非常感激。

1 个答案:

答案 0 :(得分:3)

这应该可以解决问题:

   .attr("id", function(d) { return d.id; })

返回与路径关联的数据的id字段。