在D3.js中迭代geojson并在满足条件时返回值

时间:2012-12-01 02:55:52

标签: javascript d3.js geojson

在D3.js中,我试图迭代geojson文件,查找特定属性的值。例如,我想迭代整个geojson文件,如果键state的值等于KS,则返回该数据。

我是D3的新手,我没有找到任何可以让我这样做的东西。我的方法可能存在缺陷,因此非常感谢任何建议。

{
   "type": "FeatureCollection",
   "features": [{
       "type": "Feature",
       "id": "KDDC",
       "state": "KS",
       "properties": {
          "name": "Dodge City Regional Airport",
          "address": "100 Airport Road, Dodge City, KS, United States"
       },
       "geometry": {
          "type": "Point",
          "coordinates": [
             -99.965556000000007,
             37.763333000000003
          ]
       }
   },

- 开始代码 -

d3.json("airports.json", function(collection) {

   var bounds = d3.geo.bounds(collection),
       path   = d3.geo.path().projection(project);

   path.pointRadius(5);

   var locations = g.selectAll("path")
      .data(collection.features, function(d) {
         if(d.state == "KS"){
            console.log(d.state);
            return d.state;
         }
      })
      .enter()
      .append("path")
      .attr("opacity", 100);

1 个答案:

答案 0 :(得分:2)

在将其传递给data()方法之前,您要做的是array.filter

例如(您的代码非常接近!)

var locations = g.selectAll("path")
  .data(collection.features.filter(function(d) {
     return d.state == "KS";
  })
  .enter()
  ...

检查Arrays上的d3 API文档 - 它突出了d3.js数组功能和常用的内置javascript数组功能。