GUIDE4YOU/OL3 - как читать пользовательские атрибуты слоя
Как я могу прочитать пользовательские атрибуты слоя?
Например, я добавил слой с пользовательским атрибутом test и значением sam.
createG4U('#g4u-map', 'conf/client.commented.json', 'conf/layers.commented.json').then(function (map) {
map.asSoonAs('ready', true, function () {
map.get('api').addFeatureLayer({
"id": "1",
"type": "GeoJSON",
"style": stylefunction,
"source": {
"url": "files/sample.json"
},
"visible": true,
"test" : "sam"
});
map.getLayers().forEach(function (layer) {
console.log(layer);
});
});
});
С уважением,
Сэм
2 ответа
Это возможно с layer.get('test')
,
вы не получите слой с getLayers()
, так как слои вложены в разные группы слоев.
метод addFeatureLayer
вернет ссылку на слой. Вы можете сохранить его и использовать позже.
Или вы можете использовать recursiveForEach
который будет рекурсивно повторять все вложенные слои.
Вы можете сделать это для всех слоев карты с помощью map.getLayerGroup().recursiveForEach(function (layer) { ... })
или вы можете сделать это для FeatureLayers или BaseLayers только с map.get('featureLayers').recursiveForEach(function (layer) { ... })
Спасибо, Саймон!
Рабочий код:
createG4U('#g4u-map', 'conf/client.commented.json', 'conf/layers.commented.json').then(function (map) {
map.asSoonAs('ready', true, function () {
map.get('api').addFeatureLayer({
"id": "1",
"type": "GeoJSON",
"style": stylefunction,
"source": {
"url": "files/sample.json"
},
"visible": true,
"test" : "sam"
});
map.get('featureLayers').recursiveForEach(function (layer) {
console.log(layer.get('test'));
});
//Make the layer visible in the menu
map.get('UIConfigurator').configureUI();
});
});