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'. Что там в доках понаписали лучше вообще не читать

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