OpenLayers: вендор-параметры
Добавлено: 08 ноя 2010, 15:33
OpenLayers самостоятельно составляет строку запроса к сервисам OWS (WMS, WFS) и подставляет все нужные параметры. Но иногда возникает потребность внести дополнительный параметр, это могут быть vendor options или доп. аргументы враппера.
Самым распространенным примером применения этой практики является использование атрибута 'map' для указания пути к файлу настроек UMN MapServer. Про него я недавно писал.
По хорошему, хочется что бы такие параметры были отделены от атрибутов классов OpenLayers. Например, как это реализовано в контроллере WMSGetFeatureInfo:Содержимое vendorParams никак не обрабатывается, а просто приписывается в строку запроса к серверу.
В других же случаях это специально не предусмотрено. Например, протокол WFS:обращается к сервису запросами типа POST, т.е. использует для этого чистый 'url' без параметров (сами параметры передаются в теле запроса). Но т.к. логика работы на более низком уровне основана на XMLHttpRequest, то можно воспользоваться атрибутом params:
Самым распространенным примером применения этой практики является использование атрибута '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=###' }
});
В других же случаях это специально не предусмотрено. Например, протокол WFS:
Код: Выделить всё
protocol: new OpenLayers.Protocol.WFS({
version: '1.0.0',
url: 'http://server/...',
featureType: 'points',
})
Код: Выделить всё
protocol: new OpenLayers.Protocol.WFS({
version: '1.0.0',
url: 'http://server/...',
featureType: 'points',
params: { 'sql_filter': 'name=###' }
})