Запрос GetFeatureInfo с прокси в OpenLayers

#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() вызова, прежде чем добавлять его.