Openlayers: наборы точек

Mapserver, GeoServer, MapGuide, Google и другое ПО для веб-картографии
Ответить
san4es
Новоприбывший
Сообщения: 2
Зарегистрирован: 16 дек 2009, 13:29
Репутация: 0

Openlayers: наборы точек

Сообщение san4es » 17 дек 2009, 17:11

Добрый день!

Я недавно "открыл" для себя Openlayer, потому просьба не слишком ругаться.

Задача: есть наборы точек, которые необходимо отрисовывать. Текущий набор выделяетсядругим цветом. Как лучше это сделать? Создать один GML файл со всеми наборами или по одному GML файлу на набор? В последнем случае я даже смог их отрисовать разным цветом.

А как потом изменить цвет точек?

Аватара пользователя
Mavka
Гуру
Сообщения: 2060
Зарегистрирован: 14 мар 2008, 17:36
Репутация: 9

Re: Openlayers: наборы точек

Сообщение Mavka » 17 дек 2009, 18:10

Это делается стилями. Что такое "Текущий набор"?
В одном слое, можно выделить по атрибуту, например type=1, в правилах (rules) стиля.
Если отдельными векторными слоями, то просто создать отдельные стили.
лангольеры под окном жрали время ом-ном-ном

san4es
Новоприбывший
Сообщения: 2
Зарегистрирован: 16 дек 2009, 13:29
Репутация: 0

Re: Openlayers: наборы точек

Сообщение san4es » 17 дек 2009, 23:34

Mavka писал(а):Это делается стилями. Что такое "Текущий набор"?
В одном слое, можно выделить по атрибуту, например type=1, в правилах (rules) стиля.
Если отдельными векторными слоями, то просто создать отдельные стили.
Текущий набор - предполагается выбор через комбобокс либо мышкой по точке из набора.

Отдельными слоями я пробовал. Вот такой код получился:

Код: Выделить всё

    <script type="text/javascript">
        var lon = 5;
        var lat = 40;
        var zoom = 5;
        var map, layer, gml_layer;

        var map = null;
        var extent = new OpenLayers.Bounds(53.0,16.6252,61.0,26.50);

        function init(){

            var options = {
                maxResolution: 0.019291992,
                maxExtent: new OpenLayers.Bounds(53.0,16.6252,61.0,26.50),
                restrictedExtent: new OpenLayers.Bounds(53.0,16.6252,61.0,26.50)
            }


            map = new OpenLayers.Map('map', options);

            var gml_layer = new OpenLayers.Layer.GML("GML", "gml/omancoast.xml", {
                styleMap: new OpenLayers.StyleMap({
 		   "default": new OpenLayers.Style({
 			pointRadius: 1, // sized according to size element from GML source
 			fillColor: "#ffcc66",
 			strokeColor: "#000000",
 			fillOpacity: 1,
 			strokeWidth: 1
 		   }),
 		   "select": new OpenLayers.Style({
 			fillColor: "#66ccff",
 			strokeColor: "#3399ff"
 		   })
                })
            });


            gml_layer.setIsBaseLayer(true);
//points
            var point_layer = new OpenLayers.Layer.GML("GML", "gml/01.xml", {
                styleMap: new OpenLayers.StyleMap({
 		   "default": new OpenLayers.Style({
 			pointRadius: 4, // sized according to size element from GML source
 			fillColor: "#4a52fb",
 			strokeColor: "#000000",
 			fillOpacity: 1,
 			strokeWidth: 1
 		   }),
 		   "select": new OpenLayers.Style({
 			fillColor: "#66ccff",
 			strokeColor: "#3399ff"
 		   })
                })
            });

            var point_layer02 = new OpenLayers.Layer.GML("GML", "gml/02.xml", {
                styleMap: new OpenLayers.StyleMap({
 		   "default": new OpenLayers.Style({
 			pointRadius: 4, // sized according to size element from GML source
 			fillColor: "#27ac0d",
 			strokeColor: "#000000",
 			fillOpacity: 1,
 			strokeWidth: 1
 		   }),
 		   "select": new OpenLayers.Style({
 			fillColor: "#66ccff",
 			strokeColor: "#3399ff"
 		   })
                })
            });

            var point_layer03 = new OpenLayers.Layer.GML("GML", "gml/03.xml", {
                styleMap: new OpenLayers.StyleMap({
 		   "default": new OpenLayers.Style({
 			pointRadius: 4, // sized according to size element from GML source
 			fillColor: "#27ac0d",
 			strokeColor: "#000000",
 			fillOpacity: 1,
 			strokeWidth: 1
 		   }),
 		   "select": new OpenLayers.Style({
 			fillColor: "#66ccff",
 			strokeColor: "#3399ff"
 		   })
                })
            });

            map.addLayers([gml_layer, point_layer, point_layer02, point_layer03]);
 
            map.setCenter(extent, 1);

            map.zoomToExtent(new OpenLayers.Bounds(53.0,16.6252,61.0,26.50));

        }
    </script>
Правда, файлов у меня штук под 20, потому наверное надо в цикле их добавлять. Сейчас пришло в голову, что надо использовать не default другой цвет, а selected. А как можно сразу слой в selected переключить?

Ответить

Вернуться в «Веб-картография»

Кто сейчас на конференции

Сейчас этот форум просматривают: нет зарегистрированных пользователей и 1 гость