我有一个开放层要素对象数组:
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属性值。
答案 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
的第二个参数是数组中的索引,因此在您的情况下,这将为您提供0
和1
,如果这些是您所需要的值,则很好想。如果要获取ID,可以通过调用name.get('ID')
或feature.get('ID')
(请参见上文)来访问这些值。我想我应该提到OpenLayers-Functions feature.setId()
和feature.getId()
,只是为了完整起见。
TL;博士
尝试使用name.get('NAME')
代替name.NAME
并检查结果