цикл по массиву объектов открытого слоя - PullRequest
0 голосов
/ 23 сентября 2019

У меня есть массив объектов объектов открытого слоя:

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 ]

1 голос
/ 24 сентября 2019

Когда элемент создается с помощью конструктора new Feature({}), он не выглядит как объект-свойство, помещенный в конструктор.Свойства, которые вы передали в новую функцию, будут сохранены в values этой функции.

Полные свойства ol-функции доступны через feature.getProperties() отдельные значения доступны через feature.get(key)

В вашем примере в Data.map вы назвали первый параметр name, который фактически является функцией.Это немного сбивает с толку, я думаю, feature или что-то подобное будет более понятным именем переменной.

Чтобы получить это значение функции, позвоните name.get('NAME') (или feature.get('NAME'), если вы решите переименовать параметр)

Кроме того, вторым аргументом Array.map является индекс в массиве, так что в вашем случае это даст вам 0 и 1, что хорошо, если вам нужны эти значения.Если вы хотите получить идентификатор, вы можете получить доступ к этим значениям, позвонив по номеру name.get('ID') или feature.get('ID') (см. Выше).Полагаю, мне следует упомянуть OpenLayers-Functions feature.setId() и feature.getId(), просто для завершения.

TL; Dr

Попробуйте name.get('NAME') вместо name.NAME и проверьте результаты

1 голос
/ 23 сентября 2019

используйте это вместо (удалите двойные кавычки):

 new Feature({ ID: 101, NAME: "ABC" }), 
 new Feature({ ID: 102, NAME: "XYZ" })
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...