OpenLayers активный слой
-
- Участник
- Сообщения: 66
- Зарегистрирован: 04 сен 2012, 11:28
- Репутация: 0
OpenLayers активный слой
Есть работающая связка OL+MapServer+PostGis. В PG есть таблица, где каждая запись хранит геометрию некоторой полигон-фигуры.
OL отображает этот слой через WMS.
Хотелось бы, чтобы вместо фигуры выводился, например, треугольник, а по-хорошему, надо бы, чтобы заданный растрик в виде значка. Например знак дпс. И чтобы по клику на нем можно было выводить определенную инфу об этом знаке.
Т.е. логика примерно как в яндекс API у активных слоев.
OL отображает этот слой через WMS.
Хотелось бы, чтобы вместо фигуры выводился, например, треугольник, а по-хорошему, надо бы, чтобы заданный растрик в виде значка. Например знак дпс. И чтобы по клику на нем можно было выводить определенную инфу об этом знаке.
Т.е. логика примерно как в яндекс API у активных слоев.
- Denis Rykov
- Гуру
- Сообщения: 3376
- Зарегистрирован: 11 апр 2008, 21:09
- Репутация: 529
- Ваше звание: Author
- Контактная информация:
Re: OpenLayers активный слой
Сделать view в PostGIS, хранящий центроиды полигонов, подключить его в MapServer и настроить символику, подключив нужные вам значки.
Spatial is now, more than ever, just another column- The Geometry Column.
-
- Участник
- Сообщения: 66
- Зарегистрирован: 04 сен 2012, 11:28
- Репутация: 0
Re: OpenLayers активный слой
Здесь можно немного по подробнее?настроить символику, подключив нужные вам значки.
-
- Участник
- Сообщения: 66
- Зарегистрирован: 04 сен 2012, 11:28
- Репутация: 0
Re: OpenLayers активный слой
Я не очень понимаю как туда вставить нужный мне растр.
- Denis Rykov
- Гуру
- Сообщения: 3376
- Зарегистрирован: 11 апр 2008, 21:09
- Репутация: 529
- Ваше звание: Author
- Контактная информация:
Re: OpenLayers активный слой
Создаёте файл symbols.sym, в нём прописываете определение символов (подключаете нужный значок):
Затем в map-файле подключаете файл стилей и используете его при определении стиля:
Код: Выделить всё
SYMBOLSET
SYMBOL
NAME "herbary"
TYPE pixmap
IMAGE "grass.png"
END
Код: Выделить всё
SYMBOLSET "symbols/symbols.sym"
CLASS
NAME "Herbary"
STYLE
SYMBOL "herbary"
END
END
Spatial is now, more than ever, just another column- The Geometry Column.
-
- Участник
- Сообщения: 66
- Зарегистрирован: 04 сен 2012, 11:28
- Репутация: 0
Re: OpenLayers активный слой
Огромное спасибо за подробный ответ.
Осталось выяснить, как повесить клик на эти значки, и различать их между собой, чтобы выводить свойственную значку инфу.
Осталось выяснить, как повесить клик на эти значки, и различать их между собой, чтобы выводить свойственную значку инфу.
- Denis Rykov
- Гуру
- Сообщения: 3376
- Зарегистрирован: 11 апр 2008, 21:09
- Репутация: 529
- Ваше звание: Author
- Контактная информация:
Re: OpenLayers активный слой
Spatial is now, more than ever, just another column- The Geometry Column.
-
- Участник
- Сообщения: 66
- Зарегистрирован: 04 сен 2012, 11:28
- Репутация: 0
Re: OpenLayers активный слой
Да, сделал таблицу с центрами полигонов, и к этим точкам привязал символ. Работает и с растрами и с вектором!
Сейчас буду изучать WMSGetFeatureInfo. Думаю вопросы еще будут
Сейчас буду изучать WMSGetFeatureInfo. Думаю вопросы еще будут
-
- Участник
- Сообщения: 66
- Зарегистрирован: 04 сен 2012, 11:28
- Репутация: 0
Re: OpenLayers активный слой
Возникло несколько вопросов:
1. Как обратиться к конкретному слою в WMS? Или придется делать на каждый слой отдельный map-файл. И подключать несколько WMS-слоев в OL?
2. Как из ответа получить конкретный атрибут, например ID?
3. Как это все можно кэшировать? После каждого клика существенная задержка.
1. Как обратиться к конкретному слою в WMS? Или придется делать на каждый слой отдельный map-файл. И подключать несколько WMS-слоев в OL?
2. Как из ответа получить конкретный атрибут, например ID?
3. Как это все можно кэшировать? После каждого клика существенная задержка.
- Denis Rykov
- Гуру
- Сообщения: 3376
- Зарегистрирован: 11 апр 2008, 21:09
- Репутация: 529
- Ваше звание: Author
- Контактная информация:
Re: OpenLayers активный слой
1. Все слои описываются в одном map-файле, обращение идёт к слою согласно настройкам WMSGetFeatureInfo, например, можно сконфигурировать так, чтобы запросы шли только к слоям, которые сейчас включены;
2. При возвращении ответа от сервера OpenLayers автоматом парсит ответ (если тип запроса application/vnd.ogc.gml):
3. Что кэшировать, ответы?
2. При возвращении ответа от сервера OpenLayers автоматом парсит ответ (если тип запроса application/vnd.ogc.gml):
Код: Выделить всё
eventListeners: {
'getfeatureinfo': function(e) {
//Обращение к атрибуту 'attr' первого объекта из массива features
console.log(e.features[0].attributes['attr']);
}
}
Spatial is now, more than ever, just another column- The Geometry Column.
-
- Участник
- Сообщения: 66
- Зарегистрирован: 04 сен 2012, 11:28
- Репутация: 0
Re: OpenLayers активный слой
Да, ответы
-
- Участник
- Сообщения: 66
- Зарегистрирован: 04 сен 2012, 11:28
- Репутация: 0
Re: OpenLayers активный слой
Что то я не догоняю слегка....
Вот слой WMS в OL:
Вот создание контрола:
Как мне сделать так, чтобы кликалось только по слою "azs"? При этом должны отображаться и azs и uzl
Вот слой WMS в OL:
Код: Выделить всё
var M = new OpenLayers.Layer.WMS("RoadLayer", "http://localhost/cgi-bin/mapserv.exe?map=/ms4w/apps/example/wms - mezhuzl.map&", {transparent: 'true', layers: 'uzl,azs', format: 'png'});
Код: Выделить всё
var click_ctrl = new OpenLayers.Control.WMSGetFeatureInfo({
url: "http://localhost/cgi-bin/mapserv.exe?map=/ms4w/apps/example/wms - mezhuzl.map&",
layers: [M],
queryVisible: true,
infoFormat: 'application/vnd.ogc.gml',
maxFeatures: 50,
autoActivate: true,
vendorParams: {
radius: 10
},
eventListeners: {
'getfeatureinfo': function(e) {
alert(e.features[0].attributes['id']);
}
}
});
- Denis Rykov
- Гуру
- Сообщения: 3376
- Зарегистрирован: 11 апр 2008, 21:09
- Репутация: 529
- Ваше звание: Author
- Контактная информация:
Re: OpenLayers активный слой
Опишите каждый wms слой отдельным объектом OpenLayers.Layer.WMS, и используйте в контроле нужный вам слой.
[ Сообщение с мобильного устройства ]
[ Сообщение с мобильного устройства ]
Spatial is now, more than ever, just another column- The Geometry Column.
-
- Участник
- Сообщения: 66
- Зарегистрирован: 04 сен 2012, 11:28
- Репутация: 0
Re: OpenLayers активный слой
Все настроил, все работало, пока не столкнулся с новой проблемой.
Настроил кэширование через GeoWebCache. И соответственно перестал работать Control.WMSGetFeatureInfo...
Как его перенастроить?
Настроил кэширование через GeoWebCache. И соответственно перестал работать Control.WMSGetFeatureInfo...
Как его перенастроить?
- Denis Rykov
- Гуру
- Сообщения: 3376
- Зарегистрирован: 11 апр 2008, 21:09
- Репутация: 529
- Ваше звание: Author
- Контактная информация:
Re: OpenLayers активный слой
То есть вы отдаёте на клиента тайлы и поменяли тип слоя с WMS на XYZ или TMS? Можно попробовать указать опцию layerUrls в контроле WMSGetFeatureInfo.
Spatial is now, more than ever, just another column- The Geometry Column.
Кто сейчас на конференции
Сейчас этот форум просматривают: нет зарегистрированных пользователей и 3 гостя