Как добавить 2+ слоя в группу?

72
12

Как добавить два или более слоя в группу, чтобы я мог видеть их в категории classwitcher, и вы можете выбрать или отменить выбор всех?

Вот код, который у меня есть:


            var line_1 = new OpenLayers.Layer.Vector(" Line no - 1", {
visibility: true,
projection: dproj,
strategies: [new OpenLayers.Strategy.Fixed()],
style: {strokeWidth: 4, strokeColor: "#ff0000", strokeOpacity: 1},
protocol: new OpenLayers.Protocol.HTTP({
url: "lines/en/line_1.kml",
format: new OpenLayers.Format.KML
})
});

var line_2 = new OpenLayers.Layer.Vector(" Line no - 2", {
visibility: true,
projection: dproj,
strategies: [new OpenLayers.Strategy.Fixed()],
style: {strokeWidth: 4, strokeColor: "#008000", strokeOpacity: 1},
protocol: new OpenLayers.Protocol.HTTP({
url: "lines/en/line_2.kml",
format: new OpenLayers.Format.KML
})
});
var layers = [line_1, line_2]
map.addLayers(layers);


Теперь, как я могу перенести эти два в 1 с именем "Lines"?

спросил(а) 2011-11-05T11:06:00+04:00 8 лет, 2 месяца назад
2
Решение
74

Я думаю, что GeoExt.tree - это то, что вы хотите.

См. это письмо:


Переключатель уровня OpenLayers не поддерживает иерархию уровней и вероятно, никогда не будет. Я бы рекомендовал проверить дерево слоев MapFish (http://www.mapfish.org). Дерево слоев MapFish либо автоматическая настройка на основе слоев, настроенных в OpenLayers или сконфигурированный с помощью пользовательской модели



http://www.osgeo.org/pipermail/openlayers-users/2008-June/006358.html

Отъезд здесь:
http://trac.osgeo.org/openlayers/browser/sandbox/jachym/openlayers/examples/layer-groups.html?rev=4958, он выглядит как старая ветка openlayers, которая ее поддерживает.


Итак, давайте посмотрим на это:
http://api.geoext.org/1.0/examples/tree.html


Я думаю, что GeoExt.tree - это то, что вы хотите.

ответил(а) 2011-11-06T14:21:00+04:00 8 лет, 2 месяца назад
Еще 1 ответ
34

Я знаю, что это старо, но я отвечаю в случае, если у кого-то есть тот же вопрос.


Если вы используете ol3-layerwitcher, вы можете просто создать новую группу слоев со всеми вашими определенными слоями, чтобы показать их в группе. Название группы слоев отделяет его от слоев.

var overlay1 = new ol.layer.Tile({
title: 'Overlay1',
source: new ol.source.TileWMS({
url: 'http://localhost:8080/geoserver/WORKSPACE/wms',
params:{
'LAYERS': 'Overlay1',
'TILED': true
},
serverType: 'geoserver'
}),
});

var basemap1 = new ol.layer.Tile({
title: 'Basemap1',
type: 'base'
source: new ol.source.OSM()
});

var basemaps = [basemap1, basemap2 ...]

var overlays = [overlay1, overlay2 ...]

var map = new ol.Map({
controls: [
new ol.control.LayerSwitcher({
tipLabel: 'Layers'
})
],
target: 'map',
layers: [
new ol.layer.Group({
title: 'Base Maps',
layers: basemaps
}),
new ol.layer.Group({
title: 'Overlays',
layers: overlays
})
view: view
});

ответил(а) 2017-08-23T10:21:00+03:00 2 года, 5 месяцев назад
Ваш ответ
Введите минимум 50 символов
Чтобы , пожалуйста,
Выберите тему жалобы:

Другая проблема