#proxy #openlayers #geoserver #getfeatureinfo
Вопрос:
Я пытаюсь использовать GetFeatureInfo для доступа к слою в моем массиве, который вызывается с геосервера, открывая таблицу атрибутов. Предполагается, что это будет сделано через прокси-сервер, который я добавил в соответствии с инструкциями. Карта работает, но как только я добавляю функцию одиночного клика, карта геосервера исчезает. Я гуглил несколько дней и все еще не могу понять этого, буду признателен за любую помощь, спасибо.
var layers = []; layers[0] = new ol.layer.Tile({ source: new ol.source.TileWMS({ url: 'http://localhost:8080/geoserver/An2/wms', params: { LAYERS: 'A2', VERSION: '1.1.0' }, servertype: 'geoserver' }) }); layers[1] = new ol.layer.Tile({ source: new ol.source.OSM() }); layers[2] = new ol.layer.Tile({ source: new ol.source.OSM() }); var map = new ol.Map({ target: 'map', layers: layers, view: new ol.View({ center: ol.proj.fromLonLat([13, 56]), zoom: 8, EPSG: 4326, }) }); function switchLayer(evt) { layers[evt.value].setVisible(evt.checked); } map.on('singleclick', function (event) { var url = '../../proxy/proxy.aspx?url=' layers[0].getsource().getFeatureInfoUrl (event.coordinate, map.getView().getResolution(), map.getView().getProjection().getCode(), { INFO_FORMAT: 'text/html', Layers: "A2" }); if (url) { document.getElementById('info').innerHTML = 'lt;iframe seamless src="' url '"gt;lt;/iframegt;' } });
Комментарии:
1. Если прокси принимает параметр URL, вам нужно будет вызвать
encodeURIComponent
результат.getFeatureInfoUrl()
вызова, прежде чем добавлять его.