1

I have a wms layer, it displays fine on the map, but when I try to get an object from the layer when clicked, i get an error getGetFeatureInfoUrl is not a function

    var wmsSource = new TileWMS({
      url: 'http://1.1.1.1:8080/geoserver/wms',
      params: {'LAYERS': 'workspace:feature', 'TILED': true},
      serverType: 'geoserver',
      transition: 0,
    });
    var wmsLayer = new TileLayer({
      source: wmsSource
    })
    var view = new View({
      center: [0, 0],
      zoom: 1,
    });
    if (checked) {
        map.addLayer(wmsLayer);
  }
    else {
      map.removeLayer(wmsLayer)
  }

  map.on('singleclick', function (evt) {
    var viewResolution = /** @type {number} */ (view.getResolution());
    var feature = wmsSource.getGetFeatureInfoUrl(
      evt['coordinate'],
      viewResolution,
      'EPSG:3857',
      {'INFO_FORMAT': 'text/html'}
    );
    if (feature) {
      fetch(feature)
        .then(function (response) { return response.text(); })
        .then(function (info) {
         console.log(info);
          
        });
    }

what can i do with that?

Ryota228
  • 25
  • 1
  • 7
  • 2
    If you ar using OpenLayers 6 the function name is getFeatureInfoUrl – Mike Aug 26 '20 at 08:24
  • I dont know why OpenLayers propose me only getGetFeatureInfoUrl, getFeatureInfoUrl is not available. OpenLayers 6.4.3 – Ryota228 Aug 26 '20 at 10:13
  • See the upgrade notes https://github.com/openlayers/openlayers/releases/tag/v6.0.0 "Renaming of getGetFeatureInfoUrl to getFeatureInfoUrl" – Mike Aug 26 '20 at 10:52

1 Answers1

1

The solution is to get source from layer like:

map.on('singleclick', function (evt) {
    var viewResolution = /** @type {number} */ (view.getResolution());
    var feature = wmsLayer.getSource().getFeatureInfoUrl(
      evt['coordinate'],
      viewResolution,
      'EPSG:3857',
      {'INFO_FORMAT': 'text/html'}
    );
    if (feature) {
      fetch(feature)
        .then(function (response) { return response.text(); })
        .then(function (info) {
         console.log(info);
          
        });
    }
Ryota228
  • 25
  • 1
  • 7