Viac

Získajte názov vrstvy z vrstvy Vector

Získajte názov vrstvy z vrstvy Vector


Mojím cieľom je zdôrazniť, že dve rôzne sfarbené vrstvy wfs, keď myš prejdete cez jednu z týchto vrstiev.

Potrebovalo by získať názov vektorovej vrstvy a tiež použiť štýl v jednej vrstve a iný v druhej.

Toto je môj kód WFS:

var Urbana_source = new ol.source.Vector ({format: new ol.format.GeoJSON (), url: function (rozsah, rozlíšenie, projekcia) {return 'http: // localhost: 8080 / geoserver / wfs? service = WFS & '+' verzia = 1.1.0 & request = GetFeature & typename = pucol: Urbana & '+' outputFormat = application / json & srsname = EPSG: 3857 & '+' bbox = '+ extend.join (', ') +', EPSG: 3857 ';} , strategy: ol.loadingstrategy.tile (ol.tilegrid.createXYZ ({maxZoom: 19}))}); var urbana_wfs = new ol.layer.Vector ({zdroj: Urbana_source, style: new ol.style.Style ({stroke: new ol.style.Stroke ({color: 'rgba (0, 0, 0, 0)', šírka: 2})})}); urbana_wfs.set ('name', 'urbana'); var Rustica_source = new ol.source.Vector ({format: new ol.format.GeoJSON (), url: function (rozsah, rozlíšenie, projekcia) {return 'http: // localhost: 8080 / geoserver / wfs? service = WFS & '+' verzia = 1.1.0 & request = GetFeature & typename = pucol: Rustica & '+' outputFormat = application / json & srsname = EPSG: 3857 & '+' bbox = '+ extend.join (', ') +', EPSG: 3857 ';} , strategy: ol.loadingstrategy.tile (ol.tilegrid.createXYZ ({maxZoom: 19}))}); var rustica_wfs = new ol.layer.Vector ({zdroj: Rustica_source, style: new ol.style.Style ({stroke: new ol.style.Stroke ({color: 'rgba (0, 0, 0, 0)', šírka: 2})})}); rustica_wfs.set ('name', 'rustica'); var displayFeatureInfo = function (pixel) {var feature = map.forEachFeatureAtPixel (pixel, function (feature, layer) {return feature;}); var info = document.getElementById ('info'); if (feature) {//info.innerHTML = feature.get ('referencia'); var ref = feature.get ('referencia'); document.getElementById ("Getfeatureinfo"). hodnota = ref; document.getElementsByName ("info"). innerHTML = ref; } else {info.innerHTML = ''; } if (feature! == highlight) {if (highlight) {featureOverlay.getSource (). removeFeature (highlight); } if (feature) {featureOverlay.getSource (). addFeature (feature); } 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);}); };

Toto je môj kód. Chcel by som urobiť to, že keď prejdem myšou cez vrstvu, farba urbana_wfs bude svietiť a keď urobím ďalšie rustikálne osvetlenie.

Môj problém je, že keď to urobím, vždy dostanem dva protokoly, nie jeden. ako by ste mohli dostať názov tejto vrstvy?


Ak chcete nastaviť názov vrstvy, môžete urobiť

urbana_wfs.set ('name', 'my_layer_name'); // Ľubovoľný kľúč „meno“. Môže to byť čokoľvek, čo chcete, napríklad urbana_wfs.set ('whatever', 'my_layer_name');

Ak ste už nastavili názov, skúste použiť nasledujúci kód:

console.log (urbana_wfs.get ('meno')); // Ak nastavíte „čokoľvek“, bude to console.log (urbana_wfs.get („čokoľvek“));

To isté urobte v nasledujúcej slučke:

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

Vďaka tomu by ste teraz mali byť schopní meniť štýly v závislosti od názvu vrstvy


Našiel som riešenie, ktoré funguje správne.

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;} });

Riešením je podmienka, že chcete urobiť jednu vec a označiť ju menom a tiež ju neskôr použiť na vykonanie akcie alebo iného.

Teraz, keď máte prue [0] s hodnotou vrstvy a môžete vykonať ľubovoľnú akciu s ľubovoľným IF.