GUIDE4YOU - как добавить динамический слой?
Ребята из guide4you отлично поработали над созданием этой библиотеки с открытым исходным кодом!
Мне удалось получить работающий демонстрационный образец guide4you.
Насколько регулируема библиотека? Например, как я могу добавить слои с GeoJSON вместо KML. Можно ли добавлять слои динамически (с собственным javascript) вместо предопределенных?
Возьмем для примера: https://openlayers.org/en/latest/examples/geojson.html
Чтобы быть более конкретным: как этот пример может работать вместе с guide4you?
С уважением,
Сэм
1 ответ
Чтобы использовать слой GeoJSON в guide4you, вы можете просто указать тип "GeoJSON" в layerconfig.
{
"id": "3",
"type": "GeoJSON",
"source": {
"url": "path/to/geojson"
}
}
См. Также https://github.com/KlausBenndorf/guide4you/blob/master/conf/full/layers.commented.json для некоторых примеров
Если вы хотите добавить слой на лету с помощью JavaScript, вы можете использовать эту функцию API:
map.get('api').addFeatureLayer({
"id": "3",
"type": "GeoJSON",
"source": {
"url": "path/to/geojson"
},
"visible": true
})
возможные параметры те же, что и в конфигурации слоя.
Если вам нравится добавлять только новые функции, вы можете создать слой с типом "Intern" и добавить функции с функциональностью openlayers. Источником векторного слоя является подкласс ol.source.Vector. В приведенном ниже примере я предполагаю, что geojsonObject имеет тот же вид, что и в примере с geojson для открытых слоев.
var layer = map.get('api').addFeatureLayer({
"id": "3",
"type": "Intern",
"source": {
"features": []
},
"visible": true
});
layer.getSource().addFeatures((new ol.format.GeoJSON()).readFeatures(geojsonObject));
И последнее, но не менее важное: вы можете использовать упрощенный API для определения функций внутри объекта layerConfig, например:
{
"id": "3",
"type": "Intern",
"source": {
"features": [{
"id": 6,
"name": "Some feature",
"description: "Some description",
"style": "#defaultStyle",
"geometryWKT": "... any wkt string here ..."
},{
"geometryWKT": "... any wkt string here ..."
}]
}
}
это можно использовать либо в файле layerConfig, либо в методе API addFeatureLayer.