OpenLaers 3 + KML - изменить стиль Polygon
-
- Новоприбывший
- Сообщения: 13
- Зарегистрирован: 14 окт 2015, 01:24
- Репутация: 0
OpenLaers 3 + KML - изменить стиль Polygon
Всем привет!
Помогите пожалуйста разобраться, как изменить стиль полигона подгруженного по KML?
В KML уже прописанны стили PolyStyle, но как к ним подобраться из ol не понимаю.
Что уже пробовал: перебором всех фигур слоя layer.getSource().getFeatures() холось найти у фигуры свойства связанные со стилем, но увы. По .getKeys() , применимо к каждому полигону, получил такой расклад: geometry,name,description...
Есть идеи?
Помогите пожалуйста разобраться, как изменить стиль полигона подгруженного по KML?
В KML уже прописанны стили PolyStyle, но как к ним подобраться из ol не понимаю.
Что уже пробовал: перебором всех фигур слоя layer.getSource().getFeatures() холось найти у фигуры свойства связанные со стилем, но увы. По .getKeys() , применимо к каждому полигону, получил такой расклад: geometry,name,description...
Есть идеи?
-
- Гуру
- Сообщения: 3321
- Зарегистрирован: 27 июл 2009, 19:26
- Репутация: 748
- Ваше звание: Вредитель полей
-
- Новоприбывший
- Сообщения: 13
- Зарегистрирован: 14 окт 2015, 01:24
- Репутация: 0
Re: OpenLaers 3 + KML - изменить стиль Polygon
Спасибо за ссылку. Тут я еще не был. Я на их сайте без "dev." в разделе API читаю.ericsson писал(а):http://dev.openlayers.org/docs/files/Op ... ML-js.html читали?
Правильно ли я общий принцип понял:
у меня есть векторный слой на основе источника KML. Мне нужно создать парсер ol.Format.KML. Скормить парсеру при помощи readFeatures с моего слоя Source. Далее при помощи Вашего хелпа найти нужные свойства(цвета и т.д.), отредактировать и залить это обратно: получить из парсера при помощи writeFeatures и передать его в Source моего слоя.
Или нужен какой-то другой подход?
-
- Новоприбывший
- Сообщения: 13
- Зарегистрирован: 14 окт 2015, 01:24
- Репутация: 0
Re: OpenLaers 3 + KML - изменить стиль Polygon
На сколько я понял - это не OpenLayers 3. В третьем какая-то другая идеалогия, а объект ol.format.KML нужен только для записи и чтения KML и у него всего 7 методов.ericsson писал(а):http://dev.openlayers.org/docs/files/Op ... ML-js.html читали?
Или я ошибаюсь?
-
- Новоприбывший
- Сообщения: 13
- Зарегистрирован: 14 окт 2015, 01:24
- Репутация: 0
Re: OpenLaers 3 + KML - изменить стиль Polygon
Вопрос решен. Всем спасибо!
1) Чтобы применить свой силь при загрузке, надо отключить чтение родных стилей KML extractStyles:false
2) Для замены стиля конкретного полигона (либо др. фигуры) есть метод setStyle
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
});
Код: Выделить всё
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 гость