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

Решенные задачи, первая запись - описание решения.
Ответить
Аватара пользователя
Mavka
Гуру
Сообщения: 2060
Зарегистрирован: 14 мар 2008, 17:36
Репутация: 9

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

Сообщение Mavka » 08 ноя 2010, 15:33

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=###' }
}) 
лангольеры под окном жрали время ом-ном-ном

Ответить

Вернуться в «Рецепты»

Кто сейчас на конференции

Сейчас этот форум просматривают: нет зарегистрированных пользователей и 8 гостей