Pages: 1
- Sujet précédent - Récupérer l'id d'un polygone d'une vector layer [OpenLayers3] - Sujet suivant
#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
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
Pages: 1
- Sujet précédent - Récupérer l'id d'un polygone d'une vector layer [OpenLayers3] - Sujet suivant