Mai mult

OpenLayers 3 - Strat vectorial cu mai multe caracteristici - cum să selectați toate caracteristicile

OpenLayers 3 - Strat vectorial cu mai multe caracteristici - cum să selectați toate caracteristicile


Am mai multe straturi vectoriale care sunt construite din 3 părți: punctul de început, linia, punctul final. Fiecare dintre aceste caracteristici are propriul stil. punctul de pornire este un cerc verde, linia este gri, iar punctul final este un cerc roșu.

De asemenea, am activat selecția și funcționează, dar cum pot selecta celelalte 2 caracteristici programatic atunci când selectez una dintre părți?

Codul meu este mai jos:

var featureLine = new ol.Feature ({geometrie: new ol.geom.LineString (puncte), tastați: "line", id: id1, startdate: startdate1, starttime: starttime1, enddate: enddate1, endtime: endtime1, soaktime: soaktime1 , haulnumber: haulnumber1, area: area1, startlat: startlat1, startlon: startlon1, endlat: endlat1, endlon: endlon1}); var featureStart = new ol.Feature ({geometry: new ol.geom.Point (ol.proj.transform ([startlon1, startlat1], 'EPSG: 4326', 'EPSG: 3857')), tastați: "start", id: id1, startdate: startdate1, starttime: starttime1, enddate: enddate1, endtime: endtime1, soaktime: soaktime1, haulnumber: haulnumber1, area: area1, startlat: startlat1, startlon: startlon1, endlat: endlat1, endlon: endlon1}); var featureEnd = new ol.Feature ({geometry: new ol.geom.Point (ol.proj.transform ([endlon1, endlat1], 'EPSG: 4326', 'EPSG: 3857')), tastați: "end", id: id1, startdate: startdate1, starttime: starttime1, enddate: enddate1, endtime: endtime1, soaktime: soaktime1, haulnumber: haulnumber1, area: area1, startlat: startlat1, startlon: startlon1, endlat: endlat1, endlon: endlon1}); var vectorSource = new ol.source.Vector ({proiecție: 'EPSG: 4326', caracteristici: [featureStart, featureEnd, featureLine]}); var styleStart = [new ol.style.Style ({imagine: new ol.style.Circle ({raza: 7, fill: new ol.style.Fill ({color: '# 32CD32'})}))]]; var styleLine = [new ol.style.Style ({fill: new ol.style.Fill ({color: 'rgba (255, 255, 255, 0.2)', greutate: 4}), stroke: new ol.style. Cursa ({color: '# 808080', lățime: 4})})]]; var styleEnd = [new ol.style.Style ({image: new ol.style.Circle ({raza: 7, fill: new ol.style.Fill ({color: '# FF4500', opacity: 0.8})}) })]; var styles = [styleStart, styleLine, styleEnd]; var vectorLayer = new ol.layer.Vector ({source: vectorSource, style: function (feature, resolution) {if (feature.get ('type') === "line") {return styleLine;} if (feature. get ('type') === "start") {return styleStart;} if (feature.get ('type') === "end") {return styleEnd;} return styles;}}); map.addLayer (vectorLayer);

Și evenimentul meu selectat la inițializare este după cum urmează:

var selectClick = new ol.interaction.Select ({condition: ol.events.condition.click}); map.addInteraction (selectați Click);

Folosiți o modificare a acestui lucru:

var collection = selectClick.getFeatures (); selectClick.on ('select', function (evt) {var selected = evt.selected; if (evt.selected [0] === feature1) {collection.push (feature2);} else if (evt.selected [0 ] === feature2) {collection.push (feature1);}});

http://jsfiddle.net/jonataswalker/fm0ysb21/


Priveste filmarea: merge raster layers in Qgis