2016-11-12 3 views
2

Я использую Openlayers 3 и хотел бы создать график реального времени из информации, содержащейся на выбранном объекте. Мне нужно получить доступ к свойствам, но get ('myfield') не работает. Мои функции находятся в векторном слое GeoJSON.Получение информации об объекте от выбора ol3

var selectSingleClick = new ol.interaction.Select(); 
map.addInteraction(selectSingleClick); 


map.on('singleclick', function(event){ 
    mylayer.once('precompose',function(event){ 
     var selectedFeatures = selectSingleClick.getFeatures(); 
     readFeature(selectedFeatures); 
    }); 
}); 

function readFeature(features){ 
    consoleText = document.getElementById('console'); 
// When selected, getLength() returns 1, so selection is working. 
// consoleText.innerHTML = features.getLength(); 
    var myfeature = features[0]; 
    consoleText.innerHTML += myfeature.get('objectId'); 
} 

Кто-нибудь может помочь мне понять, что происходит не так? У меня мало опыта работы с Javascript.

ответ

0

Я нашел свою проблему. Попытка получить доступ к функциям с помощью

var myfeature = features[0]; 

Правильный синтаксис должен быть:

var myfeature = features.item(0); 

Но в предыдущих примерах функций [0] работали. Было бы заинтересованы, чтобы понять, почему это так ...

1

Если и смотреть на документацию OpenLayers 3 http://openlayers.org/en/latest/apidoc/ol.interaction.Select.html#getFeatures selectSingleClick.getFeatures() возвращает ol.Collection() объект, который является усовершенствованием по сравнению с обычным Javascript массива объектов. Для получения дополнительной информации о ol.Collection() обратитесь по этой ссылке. http://openlayers.org/en/latest/apidoc/ol.Collection.html

var myfeature = features[0]; 

нормальный способ получить объект из массива.