как добавить 2+ слоя в группу? - PullRequest
4 голосов
/ 05 ноября 2011

Как я могу добавить два или более слоя в группу, чтобы я мог видеть их в категориях переключателя слоев и мог выбирать или отменять выбор всех!?Вот код, который у меня есть:

            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);

Теперь, как я могу сгруппировать эти два в одном с именем «Линии»?

Ответы [ 2 ]

4 голосов
/ 06 ноября 2011

Я думаю 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 - это то, что вы хотите.

0 голосов
/ 23 августа 2017

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

Если вы используете 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
});
...