访问不是几何或属性的 geojson 键值对?

Access geojson key-value pairs that are not geometry or properties?

    "type": "FeatureCollection",
    "features": [
        {
            "type": "Feature",
            "geometry": {
                "type": "Polygon",
                "coordinates": [
                    [
                        [
                            -77.155585,
                            40.056708,
                            0
                        ],
                        [
                            -77.150315,
                            40.04536,
                            0
                        ]
                    ]
                ]
            },
            "id": 42001030101,
            "Households": 1000,
            "Income": 74597
        },

我正在使用 google 地图 JS API。我无法使用 getProperty 函数,因为数据没有组合在一起的属性。

如何访问这些数据?

这是我在意识到不能使用属性功能之前尝试过的方法。

        map.data.setStyle(
          function(feature){
            let income = feature.getProperty('Income');
            let color = 'blue';
            if (income > 10000){
              color = 'red'
            }
            return {
              fillColor: color,
              //strokeColor: "green",
              strokeWeight: 0.3,
            };
          }
        );

根据 geojson spec:

A Feature object has a member with the name "properties". The value of the properties member is an object (any JSON object or a JSON null value).

由于您的功能没有 properties 成员,您可以 'repair' 它以便任何既不是 type 也不是 geometry 的成员被捆绑为properties.

的成员

这应该使用 feature.getProperty() 启用您现有的代码。

const data = {
  "type": "FeatureCollection",
  "features": [
    {
      "type": "Feature",
      "geometry": {
        "type": "Polygon",
        "coordinates": [
          [
            [-77.155585, 40.056708, 0],
            [-77.150315, 40.04536, 0]
          ]
        ]
      },
      "id": 42001030101,
      "Households": 1000,
      "Income": 74597
    }
  ]
}

const repairGeoJsonProps = (fc) => {
  return {
    "type": "FeatureCollection",
    "features": fc.features.map(ftr => {
      const props = Object.entries(ftr).filter(k => ["type", "geometry"].indexOf(k[0]) < 0);
      return {
        "type": ftr.type,
        "geometry": ftr.geometry,
        "properties": Object.fromEntries(props)
      }
    })
  }
}

console.log(repairGeoJsonProps(data));