Openlayers, WMS, getFeatureInfo не показывает информацию

Я пытаюсь создать WMS для отображения информации, когда кто-то нажимает на карту. К сожалению, часть с картой. on (' singleclick', функция (evt) {.... } не работает правильно. Место для информации появляется, но, к сожалению, оно пустое.
Я использовал тот же код, что и Geoserver для своих образцов карт. Я только изменил имена слоев и удалил несколько ненужных мне функций.

Теперь мой код выглядит так:

var everything = new ol.layer.Image({
    source: new ol.source.ImageWMS({
      ratio: 1,
      url: 'http://localhost:8090/geoserver/rebola/wms',
      params: {'FORMAT': format,
               'VERSION': '1.1.1',  
               STYLES: '',
            LAYERS: 'rebola:rebolagarten',
      }
    })
  });

  var one = new ol.layer.Tile({
    visible: false,
    source: new ol.source.TileWMS({
      url: 'http://localhost:8090/geoserver/rebola/wms',
      params: {'FORMAT': format, 
               'VERSION': '1.1.1',
               tiled: true,
            LAYERS: 'rebola:grundstueck',
         tilesOrigin: 13.868573 + "," + 46.647116
      }
    })
  });

  var projection = new ol.proj.Projection({
      code: 'EPSG:4326',
      units: 'degrees',
      axisOrientation: 'neu',
      global: true
  });
  var map = new ol.Map({
    controls: ol.control.defaults({
      attribution: false
    }).extend([mousePositionControl]),
    target: 'map',
    layers: [
        new ol.layer.Tile({
      source: new ol.source.OSM()
        }),
      everything,
      one 

    ],
  view: new ol.View({
       projection: projection
    })
  });
  map.getView().on('change:resolution', function(evt) {
    var resolution = evt.target.get('resolution');
    var units = map.getView().getProjection().getUnits();
    var dpi = 25.4 / 0.28;
    var mpu = ol.proj.METERS_PER_UNIT[units];
    var scale = resolution * mpu * 39.37 * dpi;
    if (scale >= 9500 && scale <= 950000) {
      scale = Math.round(scale / 1000) + "K";
    } else if (scale >= 950000) {
      scale = Math.round(scale / 1000000) + "M";
    } else {
      scale = Math.round(scale);
    }
    document.getElementById('scale').innerHTML = "Scale = 1 : " + scale;
  });
  map.getView().fit(bounds, map.getSize());

  map.on('singleclick', function(evt) {
    document.getElementById('nodelist').innerHTML = "Loading... please wait...";
    var view = map.getView();
    var viewResolution = view.getResolution();
    var source = everything.get('visible') ? everything.getSource() : one.getSource();

    var url = source.getGetFeatureInfoUrl(
      evt.coordinate, viewResolution, view.getProjection(),
      {'INFO_FORMAT': 'text/html', 'FEATURE_COUNT': 50});
    if (url) {
      document.getElementById('nodelist').innerHTML = '<iframe seamless src="' + url + '"></iframe>';
    }
  });

  function setTileMode(tilingMode) {
    if (tilingMode == 'one') {
      everything.set('visible', false);
      one.set('visible', true);
      }
    else {
      everything.set('visible', true);
      one.set('visible', false);
    }
  }

Ребята, можете ли вы помочь мне заставить код работать?

Привет, Мадлен

0 ответов

Другие вопросы по тегам