Nous utilisons des cookies pour vous garantir la meilleure expérience sur notre site. Si vous continuez à utiliser ce dernier, nous considèrerons que vous acceptez l'utilisation des cookies. J'ai compris ! ou En savoir plus !.
banniere

Le portail francophone de la géomatique


Toujours pas inscrit ? Mot de passe oublié ?
Nom d'utilisateur    Mot de passe              Toujours pas inscrit ?   Mot de passe oublié ?

Annonce

Printemps des cartes 2024

#1 Fri 12 January 2018 12:40

jerem_abroad
Participant occasionnel
Date d'inscription: 27 Dec 2017
Messages: 12

Récupérer l'id d'un polygone d'une vector layer [OpenLayers3]

Bonjour,

J'aimerais afficher les infos de mon polygone dans une info-bulle. Mon problème est que je n'arrive pas à récupérer l'id de mon polygone lors de mon click. J'arrive à récupérer l'ensemble de mes infos de ma couche mais pas uniquement l'id de mon polygone sélectionné.

Pouvez-vous m'aider ??

Mon code:

Code:

  /*DEFINITION COUCHE WMS*/
    var osm = new ol.layer.Tile({
    source: new ol.source.OSM()
  });

  var wms_source = new ol.source.TileWMS({
        url: 'http://localhost:8080/geoserver/wms',
    params: {
              'LAYERS': 'gaez_fao:gleyic_layer',
              'TILED': true
              },
    serverType: 'geoserver',
    crossOrigin: 'anonymous'
   });

   var wms = new ol.layer.Tile({
    source: wms_source
  });

 /*DEFINITION COUCHE WFS*/

var vector_source = new ol.source.Vector({
      format: new ol.format.GeoJSON(),
      url: function(extent, resolution, projection) {
        return 'http://localhost:8080/geoserver/wfs?service=WFS&' +
          'version=1.1.0&request=GetFeature&typename=gaez_fao:gleyic_shapefile_table&' +
          'outputFormat=application/json&srsname=EPSG:4326&' +
          'bbox=' + extent.join(',') + ',EPSG:4326';
      },
      strategy: ol.loadingstrategy.bbox
    });

  var wfs = new ol.layer.Vector({
      source: vector_source,
      style: new ol.style.Style({
        stroke: new ol.style.Stroke({
          color: 'green',
          width: 2
        })
      })
    });

  /*DEFINITION MAP*/
  var view = new ol.View({
        //laos
        center: [11500000, 2000000],
        //zoom: 6
        zoom: 2
      });

      var map = new ol.Map({
        layers: [osm,wms,wfs],
        overlays: [overlay],
        target: 'map',
        view: view
      });


      map.on('singleclick', function(evt) {
        //RECUPERATION DES COORDONNEES DU CLIC
        var source = evt.target;
        console.log('evt.coordinate[0] = ' + evt.coordinate[0]);
        console.log('evt.coordinate[1] = ' + evt.coordinate[1]);
        var lonlat = ol.proj.transform(evt.coordinate,'EPSG:3857','EPSG:4326')
        console.log('lon = ' + lonlat[0]);
        console.log('lat = ' + lonlat[1]);
        
        //COUCHE WFS
        if(wfs.getSource().getState() == 'ready'){
          var features = wfs.getSource().getFeatures();
          //récupération de toutes les coordonnées des polygones
          features.forEach(function(feature){
            console.log(feature.getGeometry().getCoordinates()); // coordonnée
            console.log(feature.getId()); // id de tous mes polygones
          });

          //AFFICHAGE DANS UNE BULLE --> AU LIEU DE 10001, J'AIMERAIS INDIQUER L'ID DE MON POLYGONE SÉLECTIONNE
          content.innerHTML = '<p>pixel value:</p><code>' + features[10001].N.pixel_value + '</code>';
          console.log('features[10001].N.geometry = ' + features[10001].N.geometry);
          overlay.setPosition(evt.coordinate);
        }
      });

Dernière modification par jerem_abroad (Fri 12 January 2018 12:57)

Hors ligne

 

#2 Sun 14 January 2018 09:50

jerem_abroad
Participant occasionnel
Date d'inscription: 27 Dec 2017
Messages: 12

Re: Récupérer l'id d'un polygone d'une vector layer [OpenLayers3]

Je vais être un peu plus précis.

J'ai publié mon shapefile (couche de polygones) dans GEOSERVER et je voudrais interroger ma couche vectorielle pour pouvoir récupérer mes informations relatives à un polygone en particulier depuis mon front avec OpenLayers3.

Est ce que ma couche vectorielle est bien déclaré ? (J'ai publié ma table sur Geoserver avec la fonction PostGIS Database). Le format de ma couche vectorielle (GeoJSON) est-il judicieux ?

Est ce possible de récupérer les attributs d'un polygone en particulier grâce à l'event du click ? Si oui, quels attributs de l'event faut-il que j'utilise ?Ou est-ce préférable de récupérer les coordonnées du click et de faire une recherche dans mon shapefile en fonction de ses coordonnées ?

Merci pour votre aide.

Cordialement.

Hors ligne

 

#3 Sun 14 January 2018 12:14

Bruno
Membre du bureau
Lieu: Toulouse
Date d'inscription: 22 Jun 2005
Messages: 11750
Site web

Re: Récupérer l'id d'un polygone d'une vector layer [OpenLayers3]

Technos OS, je déplace ici.

Hors ligne

 

#4 Mon 15 January 2018 11:06

jerem_abroad
Participant occasionnel
Date d'inscription: 27 Dec 2017
Messages: 12

Re: Récupérer l'id d'un polygone d'une vector layer [OpenLayers3]

Problème résolu avec :
var coordinate = map.getEventCoordinate(evt.originalEvent);

var feature = wfs.getSource().getFeaturesAtCoordinate(coordinate);

Hors ligne

 

Pied de page des forums

Powered by FluxBB