OpenLayers: GetFeatureInfo с подменой URL

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

OpenLayers: GetFeatureInfo с подменой URL

Сообщение Mavka » 05 ноя 2010, 17:49

OpenLayers. Сам WMS получаем по одному каналу, а GetFeatureInfo хотим брать по другому. Например, картинки получаем из кэша или через специальный враппер (актуально для UMN):

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

lay_points = new OpenLayers.Layer.WMS('Points',
    url_cached, {layers: 'points'}
); 
Если просто задать layers:

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

click_ctrl = new OpenLayers.Control.WMSGetFeatureInfo({
    layers: [myLayer],
    ...
}); 
то url для запроса будет такой же как у слоя (а нам нужно его заменить.)
В документации говорится о параметрах 'url' и 'layerUrls'. Что там в доках понаписали лучше вообще не читать 8) . Логика такая - если заполнен массив 'layerUrls', то 'layers' можно вообще не указывать. OL соберет в контроллер все слои у которых 'url' попадает в этот массив. Т.е. он нужен только для отбора слоев на контроллер.

А вот 'url' как раз указывает кого будем запрашивать на GetFeatureInfo. В итоге нужно делать так:

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

click_ctrl = new OpenLayers.Control.WMSGetFeatureInfo({
    url: url_straight,
    layerUrls: [url_cached]
}); 
OpenLayers просмотрит массив 'layerUrls' и через него выйдет на lay_points. Но спрашивать будет через url_straight.
лангольеры под окном жрали время ом-ном-ном

Ответить

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

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

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