Использование контрола WMSGetFeatureInfo в OpenLayers: различия между версиями
(Новая страница: «== Введение == [http://www.opengeospatial.org/standards/wms Web Map Service Interface Standard] (WMS) предоставляет простой HTTP-инте...») |
Нет описания правки |
||
Строка 5: | Строка 5: | ||
== Методы и свойства WMSGetFeatureInfo == | == Методы и свойства WMSGetFeatureInfo == | ||
=== Свойства === | |||
{|class="wikitable" | |||
! Свойство | |||
! Тип | |||
! Описание | |||
|- | |||
| hover | |||
| {Boolean} | |||
| Запрос GetFeatureInfo выполняется при задержки курсора мыши над объектом. По умолчанию false. | |||
|- | |||
| drillDown | |||
| {Boolean} | |||
| align="right" | 81 | |||
|- | |||
| maxFeatures | |||
| {Integer} | |||
| Максимальное количество возвращаемых записей, определяет значение параметра FEATURE_COUNT запроса GetFeatureInfo. По умолчанию 10. | |||
|- | |||
| clickCallback | |||
| {String} | |||
| align="right" | 44927 | |||
|- | |||
| output | |||
| {String} | |||
| align="right" | 81 | |||
|- | |||
| layers | |||
| {Array(OpenLayers.Layer.WMS)} | |||
| align="right" | 81 | |||
|- | |||
| drillDown | |||
| {Boolean} | |||
| align="right" | 81 | |||
|- | |||
| queryVisible | |||
| {Boolean} | |||
| Исключает скрытые слои из запроса GetFeatureInfo. По умолчанию false, то есть если, например, слой присутствует среди слоёв, описанных в массиве layers, но при этом выключен на карте, то запрос GetFeatureInfo к этому слою всё равно будет выполнен. | |||
|- | |||
| url | |||
| {String} | |||
| URL WMS-сервиса к которому будет осуществляться запрос. Если не установлено при создании контрола WMSGetFeatureInfo, то в качестве значения будет использованo свойство url первого подходящего слоя. По умолчанию не определено. | |||
|- | |||
| layerUrls | |||
| {Array(String)} | |||
| align="right" | 81 | |||
|- | |||
| infoFormat | |||
| {String} | |||
| align="right" | 81 | |||
|- | |||
| vendorParams | |||
| {Object} | |||
| Дополнительные параметры, которые будут включены в строку запроса. Например, при таком определении данного свойства: {radius: 10} в запрос добавится подстрока "&RADIUS=10" | |||
|- | |||
| format | |||
| {OpenLayers.Format} | |||
| align="right" | 81 | |||
|- | |||
| formatOptions | |||
| {Object} | |||
| align="right" | 81 | |||
|- | |||
| handlerOptions | |||
| {Object} | |||
| align="right" | 81 | |||
|- | |||
| handler | |||
| {Object} | |||
| align="right" | 81 | |||
|- | |||
| hoverRequest | |||
| {OpenLayers.Request} | |||
| align="right" | 81 | |||
|} | |||
Строка 13: | Строка 87: | ||
<syntaxhighlight lang="javascript"> | <syntaxhighlight lang="javascript"> | ||
//Создание карты | |||
map = new OpenLayers.Map('map', ...); | |||
// Создание WMS-слоя | // Создание WMS-слоя | ||
var report = new OpenLayers.Layer.WMS('report', | var report = new OpenLayers.Layer.WMS('report', | ||
"http://gis-lab.info | "http://gis-lab.info/cgi-bin/mapserv?map=/usr/local/www/website/map/wms.map", | ||
{layers: "report_l", transparent: true}, | |||
{isBaseLayer: false, opacity: 1, singleTile: true, visibility: true} | |||
); | |||
map.addLayers([report]); | |||
// Создание контрола WMSGetFeatureInfo | |||
var click_ctrl = new OpenLayers.Control.WMSGetFeatureInfo({ | |||
url: "http://gis-lab.info/cgi-bin/mapserv?map=/usr/local/www/website/map/wms.map", | |||
layers: [report], | |||
queryVisible: true, | |||
infoFormat: 'application/vnd.ogc.gml', | |||
maxFeatures: 50, | |||
autoActivate: true, | |||
// Vendor-specific параметр, используемый в MapServer (радиус поиска объектов в пикселях) | |||
vendorParams: { | |||
radius: 10 | |||
}, | |||
eventListeners: { | |||
'getfeatureinfo': function(e) { | |||
console.log(e); | |||
} | |||
} | |||
}); | |||
// Добавляем контрол на карту | |||
map.addControl(click_ctrl); | |||
</syntaxhighlight> | </syntaxhighlight> | ||
В данном примере при клике на объекте слоя ''report'' будет выполнен запрос GetFeatureInfo к WMS-серверу и при получении ответа (событие ''getfeatureinfo'') будет выведен в консоль. Если с ответом нужно производить какие-то действия (выводить информацию во всплывающем окне, представить в виде таблицы и т.п.), то ''console.log(e)'' необходимо заменить на необходимый функционал. |
Версия от 05:38, 21 марта 2012
Введение
Web Map Service Interface Standard (WMS) предоставляет простой HTTP-интерфейс для передачи клиенту изображений, имеющих географическую привязку. WMS-запрос обязательно содержит наименования запрашиваемого слоя и требуемый охват, а WMS-ответ представляет собой одно или несколько растровых изображений. Кроме того WMS поддерживает опцию прозрачности, позволяющую использовать WMS-слои совместно с остальными, не перекрывая их. Любой WMS-сервер в обязательном порядке поддерживает два типа типа запросов: GetCapabilities (возвращает описание конкретного WMS-сервиса и перечень доступных слоёв) и GetMap (непосредственно запрос изображений), остальные типы, описанные в стандарте, поддерживаются факультативно. Среди этих типов присутствует и GetFeatureInfo, позволяющий запрашивать атрибутивную информацию об объекте, расположенном по указаным координатам. Именно этот тип запроса используется во многих клиентских приложениях и со стороны пользователя может выглядеть, например, как всплывающее окно с информацией об объекте, появляющееся после клика на нём.
В данной статье дано подробное описание контрола WMSGetFeatureInfo, использующегося в OpenLayers и показан базовый пример его использования.
Методы и свойства WMSGetFeatureInfo
Свойства
Свойство | Тип | Описание |
---|---|---|
hover | {Boolean} | Запрос GetFeatureInfo выполняется при задержки курсора мыши над объектом. По умолчанию false. |
drillDown | {Boolean} | 81 |
maxFeatures | {Integer} | Максимальное количество возвращаемых записей, определяет значение параметра FEATURE_COUNT запроса GetFeatureInfo. По умолчанию 10. |
clickCallback | {String} | 44927 |
output | {String} | 81 |
layers | {Array(OpenLayers.Layer.WMS)} | 81 |
drillDown | {Boolean} | 81 |
queryVisible | {Boolean} | Исключает скрытые слои из запроса GetFeatureInfo. По умолчанию false, то есть если, например, слой присутствует среди слоёв, описанных в массиве layers, но при этом выключен на карте, то запрос GetFeatureInfo к этому слою всё равно будет выполнен. |
url | {String} | URL WMS-сервиса к которому будет осуществляться запрос. Если не установлено при создании контрола WMSGetFeatureInfo, то в качестве значения будет использованo свойство url первого подходящего слоя. По умолчанию не определено. |
layerUrls | {Array(String)} | 81 |
infoFormat | {String} | 81 |
vendorParams | {Object} | Дополнительные параметры, которые будут включены в строку запроса. Например, при таком определении данного свойства: {radius: 10} в запрос добавится подстрока "&RADIUS=10" |
format | {OpenLayers.Format} | 81 |
formatOptions | {Object} | 81 |
handlerOptions | {Object} | 81 |
handler | {Object} | 81 |
hoverRequest | {OpenLayers.Request} | 81 |
Пример использования WMSGetFeatureInfo
Создадим WMS слой и добавим контрол WMSGetFeatureInfo для запроса информации об объектах этого слоя:
//Создание карты
map = new OpenLayers.Map('map', ...);
// Создание WMS-слоя
var report = new OpenLayers.Layer.WMS('report',
"http://gis-lab.info/cgi-bin/mapserv?map=/usr/local/www/website/map/wms.map",
{layers: "report_l", transparent: true},
{isBaseLayer: false, opacity: 1, singleTile: true, visibility: true}
);
map.addLayers([report]);
// Создание контрола WMSGetFeatureInfo
var click_ctrl = new OpenLayers.Control.WMSGetFeatureInfo({
url: "http://gis-lab.info/cgi-bin/mapserv?map=/usr/local/www/website/map/wms.map",
layers: [report],
queryVisible: true,
infoFormat: 'application/vnd.ogc.gml',
maxFeatures: 50,
autoActivate: true,
// Vendor-specific параметр, используемый в MapServer (радиус поиска объектов в пикселях)
vendorParams: {
radius: 10
},
eventListeners: {
'getfeatureinfo': function(e) {
console.log(e);
}
}
});
// Добавляем контрол на карту
map.addControl(click_ctrl);
В данном примере при клике на объекте слоя report будет выполнен запрос GetFeatureInfo к WMS-серверу и при получении ответа (событие getfeatureinfo) будет выведен в консоль. Если с ответом нужно производить какие-то действия (выводить информацию во всплывающем окне, представить в виде таблицы и т.п.), то console.log(e) необходимо заменить на необходимый функционал.