遍历开放层要素对象数组

时间:2019-09-23 16:19:01

标签: javascript arrays reactjs openlayers

我有一个开放层要素对象数组:

import Feature from 'ol/Feature';
const Data = [ 
    new Feature({ "ID": 101, "NAME": "ABC" }), 
    new Feature({ "ID": 102, "NAME": "XYZ" })
    ];
//looping through
                  <ListGroup>
                  {Data.map(function(name, id){
                      return (<ListGroup.Item action href="" key={id}>{name.NAME}</ListGroup.Item>)
                  })}
                  </ListGroup> 

我得到的列表元素为空,并且无法获取NAME属性值。

2 个答案:

答案 0 :(得分:1)

改为使用此(删除双引号):

 new Feature({ ID: 101, NAME: "ABC" }), 
 new Feature({ ID: 102, NAME: "XYZ" })

答案 1 :(得分:1)

使用new Feature({})构造函数创建功能时,它看起来不太像放在构造函数中的属性对象。您传递给新功能的属性将存储在该功能的values下。

可以通过feature.getProperties()访问ol-feature的完整属性,可以通过feature.get(key)访问单个值

在您的示例中,您在Data.map中命名了第一个参数name,它实际上是功能。这有点令人困惑,我认为feature或类似的名称会更清楚。

要获取该功能值,请致电name.get('NAME')(如果决定重命名参数,请致电feature.get('NAME')

此外,Array.map的第二个参数是数组中的索引,因此在您的情况下,这将为您提供01,如果这些是您所需要的值,则很好想。如果要获取ID,可以通过调用name.get('ID')feature.get('ID')(请参见上文)来访问这些值。我想我应该提到OpenLayers-Functions feature.setId()feature.getId(),只是为了完整起见。

TL;博士

尝试使用name.get('NAME')代替name.NAME并检查结果