OpenLaers 3 + KML - изменить стиль Polygon

Mapserver, GeoServer, MapGuide, Google и другое ПО для веб-картографии
Ответить
Kot137
Новоприбывший
Сообщения: 13
Зарегистрирован: 14 окт 2015, 01:24
Репутация: 0

OpenLaers 3 + KML - изменить стиль Polygon

Сообщение Kot137 » 14 окт 2015, 01:41

Всем привет!
Помогите пожалуйста разобраться, как изменить стиль полигона подгруженного по KML?
В KML уже прописанны стили PolyStyle, но как к ним подобраться из ol не понимаю.
Что уже пробовал: перебором всех фигур слоя layer.getSource().getFeatures() холось найти у фигуры свойства связанные со стилем, но увы. По .getKeys() , применимо к каждому полигону, получил такой расклад: geometry,name,description...
Есть идеи?

ericsson
Гуру
Сообщения: 3321
Зарегистрирован: 27 июл 2009, 19:26
Репутация: 748
Ваше звание: Вредитель полей

Re: OpenLaers 3 + KML - изменить стиль Polygon

Сообщение ericsson » 14 окт 2015, 01:49


Kot137
Новоприбывший
Сообщения: 13
Зарегистрирован: 14 окт 2015, 01:24
Репутация: 0

Re: OpenLaers 3 + KML - изменить стиль Polygon

Сообщение Kot137 » 14 окт 2015, 02:22

ericsson писал(а):http://dev.openlayers.org/docs/files/Op ... ML-js.html читали?
Спасибо за ссылку. Тут я еще не был. Я на их сайте без "dev." в разделе API читаю.
Правильно ли я общий принцип понял:
у меня есть векторный слой на основе источника KML. Мне нужно создать парсер ol.Format.KML. Скормить парсеру при помощи readFeatures с моего слоя Source. Далее при помощи Вашего хелпа найти нужные свойства(цвета и т.д.), отредактировать и залить это обратно: получить из парсера при помощи writeFeatures и передать его в Source моего слоя.
Или нужен какой-то другой подход?

Kot137
Новоприбывший
Сообщения: 13
Зарегистрирован: 14 окт 2015, 01:24
Репутация: 0

Re: OpenLaers 3 + KML - изменить стиль Polygon

Сообщение Kot137 » 14 окт 2015, 03:02

ericsson писал(а):http://dev.openlayers.org/docs/files/Op ... ML-js.html читали?
На сколько я понял - это не OpenLayers 3. В третьем какая-то другая идеалогия, а объект ol.format.KML нужен только для записи и чтения KML и у него всего 7 методов.
Или я ошибаюсь?

Kot137
Новоприбывший
Сообщения: 13
Зарегистрирован: 14 окт 2015, 01:24
Репутация: 0

Re: OpenLaers 3 + KML - изменить стиль Polygon

Сообщение Kot137 » 14 окт 2015, 04:38

Вопрос решен. Всем спасибо!

1) Чтобы применить свой силь при загрузке, надо отключить чтение родных стилей KML extractStyles:false

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

vector = new ol.layer.Vector({
      source: new ol.source.Vector({
        url: 'geogate2.php/kot_areya/wms?service=WMS&version=1.1.0&request=GetMap&layers=kot_areya:kotosloy&styles=&bbox=102.13638143867644,49.30909161619354,113.83729997857279,56.68329990038404&width=768&height=484&srs=EPSG:4728&format=application%2Fvnd.google-earth.kml%2Bxml',
        format: new ol.format.KML({extractStyles:false})
      }),
      style: styleFunction
    });
2) Для замены стиля конкретного полигона (либо др. фигуры) есть метод setStyle

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

vector.getSource().forEachFeature(function(feature){
         style = new ol.style.Style({
            fill: new ol.style.Fill({
                  color: [rand(0,255), rand(0,255), rand(0,255), 0.7]//opacity] 0xff
                }),
            stroke: new ol.style.Stroke({ color: [rand(0,255), rand(0,255), rand(0,255), 1] }),
            text: new ol.style.Text({
                fill: new ol.style.Fill({
                  color: [rand(0,255), rand(0,255), rand(0,255), 0.7]//opacity] 0xff
                }),
                stroke: new ol.style.Stroke({
                    color: [rand(0,255), rand(0,255), rand(0,255), 1], width: rand(1,4)
                })
            })
        });
        feature.setStyle(style);
    });

Ответить

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

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

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