Suite

Obtenir le nom du calque à partir d'un calque


Mon objectif est de mettre en évidence que deux couches de couleurs différentes wfs lors du passage de la souris sur l'une de ces couches.

Il faudrait obtenir le nom du calque vectoriel et également utiliser un style dans un calque et un autre dans un autre.

Voici mon code WFS :

var Urbana_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=pucol:Urbana&' + 'outputFormat=application/json&srsname=EPSG:3857&' + 'bbox=' + extend.join(',') + ',EPSG:3857'; } , stratégie : ol.loadingstrategy.tile(ol.tilegrid.createXYZ({ maxZoom : 19 })) }); var urbana_wfs = new ol.layer.Vector({ source : Urbana_source, style : new ol.style.Style({ stroke : new ol.style.Stroke({ color : 'rgba(0, 0, 0, 0)', largeur : 2 }) }) }); urbana_wfs.set('nom', 'urbana'); var Rustica_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=pucol:Rustica&' + 'outputFormat=application/json&srsname=EPSG:3857&' + 'bbox=' + extend.join(',') + ',EPSG:3857'; } , stratégie : ol.loadingstrategy.tile(ol.tilegrid.createXYZ({ maxZoom : 19 })) }); var rustica_wfs = new ol.layer.Vector({ source: Rustica_source, style: new ol.style.Style({ stroke: new ol.style.Stroke({ color: 'rgba(0, 0, 0, 0)', largeur : 2 }) }) }); rustica_wfs.set('nom', 'rustique'); var displayFeatureInfo = function(pixel) { var feature = map.forEachFeatureAtPixel(pixel, function(feature, layer) { return feature; }); var info = document.getElementById('info'); if (caractéristique) { //info.innerHTML =feature.get('référence'); var ref = feature.get('référence'); document.getElementById("Getfeatureinfo").value = ref; document.getElementsByName("info").innerHTML=ref; } else { info.innerHTML = ' '; } if (caractéristique !== surligner) { if (surligner) { featureOverlay.getSource().removeFeature(surligner); } if (fonctionnalité) { fonctionnalitéOverlay.getSource().addFeature(fonctionnalité); } map.getLayers().forEach(function(el) { if (el.get('name') === 'urbana') { console.log(urbana_wfs.get('name')); } else if ( el.get('name') === 'rustica') { console.log(rustica_wfs.get('name')); } }) Highlight = feature; } } ; map.on('pointermove', function(evt) { if (evt.dragging) { return; } var pixel = map.getEventPixel(evt.originalEvent); displayFeatureInfo(pixel); }); map.on('click', function(evt) { displayFeatureInfo(evt.pixel); }); } ;

C'est mon code. Ce que j'aimerais faire c'est que lorsque je passe la souris sur le calque urbana_wfs la couleur s'illumine et lorsque je fais l'autre éclairage rustique.

Mon problème est que lorsque je fais cela, j'obtiens toujours les deux journaux, pas un. comme vous pourriez obtenir le nom de cette couche?


Pour donner un nom à un calque, vous pouvez faire

urbana_wfs.set('nom', 'my_layer_name'); // Clé arbitraire 'nom'. Cela peut être ce que vous voulez, par exemple urbana_wfs.set('whatever', 'my_layer_name');

Ensuite, si vous avez déjà défini le nom, essayez le code ci-dessous :

console.log(urbana_wfs.get('nom')); // Si vous définissez 'whatever', ce serait console.log(urbana_wfs.get('whatever'));

Faites de même dans la boucle suivante :

map.getLayers().forEach(function(el) { if (el.get('name') === 'my_layer_name') { console.log(el); } })

Avec cela, vous devriez maintenant pouvoir changer de style en fonction du nom du calque


J'ai trouvé une solution qui fonctionne correctement.

var feature = map.forEachFeatureAtPixel(pixel, function(feature, layer) { if (layer == urbana_wfs){//especificando la capa que es condicionas que la accion solo vaya a esa capa var capa="urbana"; prue[0 ]=capa; return feature;} if (layer == rustica_wfs){//especificando la capa que es condicionas que la accion solo vaya a esa capa var capa= "rustica"; prue[0]=capa; return feature;} });

La solution consiste à conditionner que vous souhaitiez faire une couche de chose et la marquer avec un nom et également l'utiliser plus tard pour effectuer une action ou une autre.

Maintenant que vous avez prue[0] avec la valeur de la couche et que vous pouvez effectuer n'importe quelle action avec n'importe quel IF.