Использование контрола WMSGetFeatureInfo в OpenLayers: различия между версиями

Материал из GIS-Lab
Перейти к навигации Перейти к поиску
(Новая страница: «== Введение == [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:6543/mapserver/ows"
     "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)'' необходимо заменить на необходимый функционал.

Версия от 06: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) необходимо заменить на необходимый функционал.