WMSGetFeatureInfo
OpenLayers.Control.WMSGetFeatureInfo
Внимание, для правильного функционирования может понадобиться настроить ProxyHost.
Элемент управления WMSGetFeatureInfo используется для получения информации в указанной точке для слоя WMS. Результат возвращается в различной форме, например HTML или GML, в зависимости от настроек сервера и клиента. WMSGetFeatureInfo может реагировать на события "click" и "hover". Событие "hover" возникает когда указатель мыши заканчивает перемещение [по-умолчанию отключено].
Создаем слой WMS и указываем на него при создании WMSGetFeatureInfo [параметр layers]
water = new OpenLayers.Layer.WMS('Bodies of Water',
'http://demo.opengeo.org/geoserver/wms',
{'layers': 'topp:tasmania_water_bodies'},
{isBaseLayer: false}
);
var water_ctrl = new OpenLayers.Control.WMSGetFeatureInfo({
url: 'http://demo.opengeo.org/geoserver/wms',
title: 'wms info',
layers: [water],
queryVisible: true
});
Также потребуется функция, которая обработает полученную информацию. Например, просто вставит ее в блок <div> у которого id равен "wms_info":
function showInfo(evt) {
$('wms_info').innerHTML = evt.text;
}
Осталось зарегистрировать контроллер и активировать его:
water_ctrl.events.register('getfeatureinfo', this, showInfo);
map.addControl(water_ctrl);
water_ctrl.activate();
Пример использования WMSGetFeatureInfo - Feature Info Example.
Формат данных
Выбор формата задается параметром infoFormat и, по-умолчанию, он равен 'text/html' [как в приведенном выше примере]. Также, может принимать значения: 'text/plain', 'application/vnd.ogc.gml'.
За формирование данных отвечает WMS сервер. Подробнее, смотрите соответствующую разделы в документации:
- GeoServer: GetFeatureInfo templates
- MapServer: Mapfile. Templating
