OpenStreetMap Forum

The Free Wiki World Map

You are not logged in.

#1 2010-11-17 17:55:21

siberiano
Moderator
From: Novosibirsk
Registered: 2010-02-25
Posts: 1,003
Website

OpenLayers.Style

Хочу визуализировать файл .osm с дорогами (не существующими, а проектируемыми, и не нарисованными на ОСМ). Есть ли где-нибудь уже существующие правила для OpenLayers, чтобы нарисовать это?

Offline

#2 2010-11-17 18:07:39

Stud555
Member
From: г.Истра, МО
Registered: 2010-07-05
Posts: 564
Website

Re: OpenLayers.Style

В смысле визуализировать? Если просто нарисовать данные из осм-файла, то делается так:

            var losm = new OpenLayers.Layer.GML("Data.OSM", "data.osm", {
                format: OpenLayers.Format.OSM,
                style: {strokeColor: "blue", strokeWidth: 1, strokeOpacity: 0.5},
                projection: new OpenLayers.Projection("EPSG:4326")
            });
            map.addLayer(losm);

Карты для Навител, Гис Руссы. Разработка ОСМ.РУ, вики

Offline

#3 2010-11-17 18:17:19

siberiano
Moderator
From: Novosibirsk
Registered: 2010-02-25
Posts: 1,003
Website

Re: OpenLayers.Style

Это я уже сделал. Хочу больше - rule-based style. Непонятно, есть ли оно где-нибудь или надо будет самому.

Offline

#4 2010-11-17 18:25:06

siberiano
Moderator
From: Novosibirsk
Registered: 2010-02-25
Posts: 1,003
Website

Re: OpenLayers.Style

Нашёл одно описание принципов с примерами
http://workshops.opengeo.org/openlayers … style.html

Offline

#5 2010-11-18 00:09:17

Aleksandr Dezhin
Member
From: Msk
Registered: 2008-05-25
Posts: 2,109
Website

Re: OpenLayers.Style

я как-то так делал - кривовато, в смысле кода, но работает:

            var defaultStyle = new OpenLayers.Style({
                fillOpacity: 1,
                pointRadius: 10,
                strokeWidth: 1,
                strokeColor: 'gray',
                fillColor: 'white',
                fillOpacity: 0.5
            });

            var temporaryStyle = new OpenLayers.Style({
                strokeWidth: 2,
                strokeColor: 'red'
            });

            
            var styleMap = new OpenLayers.StyleMap({'default': defaultStyle,
                         'temporary': temporaryStyle});
            var lookup = {};
            lookup['TOPO'] = {fillColor: "red"};
            lookup['B_HOLE'] = {fillColor: "yellow"};
            lookup['BL_OVERLAP'] = {fillColor: "green"};
            lookup['B_BAD_LEVEL'] = {fillColor: "gray"};
            lookup['NONAME'] = {fillColor: "pink"};
            lookup['S_OVERLAP'] = {fillColor: "blue"};
            lookup['S_WITHIN'] = {fillColor: "cyan"};
            lookup['SB_OVERLAP'] = {fillColor: "magenta"};
            
            var lookup2 = {};
            lookup2['2'] = {pointRadius: 14};
            lookup2['3'] = {pointRadius: 12};
            lookup2['4'] = {pointRadius: 10};
            lookup2['5'] = {pointRadius: 8};
            lookup2['6'] = {pointRadius: 6};
            lookup2['7'] = {pointRadius: 5};
            lookup2['8'] = {pointRadius: 4};
            lookup2['9'] = {pointRadius: 3};
            lookup2['10'] = {pointRadius: 1};
            styleMap.addUniqueValueRules("default", "error_type", lookup, context);
            styleMap.addUniqueValueRules("default", "error_scale", lookup2, context);
           
            wfs = new OpenLayers.Layer.WFS(
                "Маркеры ошибок",
                "../cgi-bin/mapserv?MAP=/home/osm/cgi-bin/bc.map&SERVICE=WFS&",
                {typename: 'error', srs: 'EPSG:4326'},
                {
                    typename: "error",
                    featureNS: "http://www.openplans.org/topp",
                    extractAttributes: true,
                    commitReport: function(str) {
                        OpenLayers.Console.log(str);
                    },
                    styleMap: styleMap
                }
            );

             map.addLayer(wfs);
             

[ Проверка границ и НП | Дампы | Валидатор рек | Кое-что ещё ]
- Нет! Не надо пытаться. Делай. Или не делай. Не надо пытаться. (c) Йода

Offline

#6 2010-11-18 22:01:49

siberiano
Moderator
From: Novosibirsk
Registered: 2010-02-25
Posts: 1,003
Website

Re: OpenLayers.Style

Это для точек на валидаторе рек?

Offline

#7 2010-11-19 15:55:57

Aleksandr Dezhin
Member
From: Msk
Registered: 2008-05-25
Posts: 2,109
Website

Re: OpenLayers.Style

siberiano wrote:

Это для точек на валидаторе рек?

Не совсем, в самом первом варианте проверялки границ. Потом мне показалось проще использовать WMS + GetFeatureInfo, и в реках сделано так.


[ Проверка границ и НП | Дампы | Валидатор рек | Кое-что ещё ]
- Нет! Не надо пытаться. Делай. Или не делай. Не надо пытаться. (c) Йода

Offline

#8 2010-11-19 18:50:32

siberiano
Moderator
From: Novosibirsk
Registered: 2010-02-25
Posts: 1,003
Website

Re: OpenLayers.Style

Понятно, спасибо. Я сделал простую пару правил. Думал, что можно сделать толстую линию, обведённую контуром. Выходит, что нет.

вот оно:
http://stroyki.ryba4.com
(можно включить слой "Оловозаводской мост", там кусок OSM показывается красными линиями.)

Offline

Board footer

Powered by FluxBB