Страница 1 из 1

OpenLayers: вендор-параметры

Добавлено: 08 ноя 2010, 15:33
Mavka
OpenLayers самостоятельно составляет строку запроса к сервисам OWS (WMS, WFS) и подставляет все нужные параметры. Но иногда возникает потребность внести дополнительный параметр, это могут быть vendor options или доп. аргументы враппера.

Самым распространенным примером применения этой практики является использование атрибута 'map' для указания пути к файлу настроек UMN MapServer. Про него я недавно писал.

По хорошему, хочется что бы такие параметры были отделены от атрибутов классов OpenLayers. Например, как это реализовано в контроллере WMSGetFeatureInfo:

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

click_ctrl = new OpenLayers.Control.WMSGetFeatureInfo({
    url: 'http://server/...',
    layers: [lay_points],
    infoFormat: 'application/vnd.ogc.gml',
    vendorParams: { sql_filter: 'name=###' }
}); 
Содержимое vendorParams никак не обрабатывается, а просто приписывается в строку запроса к серверу.

В других же случаях это специально не предусмотрено. Например, протокол WFS:

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

protocol: new OpenLayers.Protocol.WFS({
    version: '1.0.0',
    url: 'http://server/...',
    featureType: 'points',
}) 
обращается к сервису запросами типа POST, т.е. использует для этого чистый 'url' без параметров (сами параметры передаются в теле запроса). Но т.к. логика работы на более низком уровне основана на XMLHttpRequest, то можно воспользоваться атрибутом params:

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

protocol: new OpenLayers.Protocol.WFS({
    version: '1.0.0',
    url: 'http://server/...',
    featureType: 'points',
    params: { 'sql_filter': 'name=###' }
})