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


