Vairāk

Atlasiet vairākas funkcijas programmā OpenLayers 3

Atlasiet vairākas funkcijas programmā OpenLayers 3


Es vēlētos izmantot mijiedarbību ar klikšķi, lai atlasītu vairākas funkcijas (man ir divi vektoru slāņi) un parādītu to nosaukumus infokastē. Kas vainas?

var selectClick = new ol.interaction.Select ({condition: ol.events.condition.Click, toggleCondition: ol.events.condition.shiftKeyOnly,}); var select = selectClick; map.addInteraction (atlasīt); var selectedFeaturesClick = select.getFeatures (); select.on ('pievienot', funkcija (e) {var info = []; selectedFeaturesClick.push (funkcija); info.push (feature.get ('DIVISION')); if (info.length> 0) {infoBox2 .innerHTML = info.join (',');}});

Es arī mēģināju ar šādām rindām, bet joprojām nedarbojos labi. Es vēlētos izmantot mijiedarbību ar klikšķi, lai atlasītu vairākas funkcijas un parādītu to sadalījuma nosaukumus infokastē2. Izmantojot šo kodu, ja es pievienoju jaunu funkciju (izmantojot taustiņu Shift), infobox2 tiek atjaunināts ar papildu funkcijas nosaukumu (DIVISION), bet tas tiek atkārtots infobox2, kad mēģinu noņemt šo funkciju no atlases (ar alt taustiņš). Es gribētu noņemt iezīmi un noņemt tās sadaļas nosaukumu no infokastes2. Kā tas ir iespējams?

var infoBox2 = document.getElementById ('info2'); var selectClick = new ol.interaction.Select ({addCondition: ol.events.condition.shiftKeyOnly, toggleCondition: ol.events.condition.never, removeCondition: ol.events.condition.altKeyOnly,}); select = selectClick; map.addInteraction (atlasīt); var Features = select.getFeatures (); var info = []; var displayFeatureInfoClick = funkcija (pikseļi) {var features = []; map.forEachFeatureAtPixel (pixel, function (feature, layer) {features.push (feature);}); if (features.length> 0) {for (var i = 0, ii = features.length; i 

Jūs varētu vēlēties šo:

var selectClick = jauns ol.interaction.Select ({nosacījums: ol.events.condition.click, toggleCondition: ol.events.condition.shiftKeyOnly,}); map.addInteraction (selectClick); var selectedFeaturesClick = selectClick.getFeatures (); var info = []; selectClick.on ('select', function (evt) {var feature = evt.selected [0]; selectedFeaturesClick.push (feature); info.push (feature.get ('DIVISION')); if (info.length> 0) {infoBox2.innerHTML = info.join (',');}});

Tur navpievienotnotikumsol.interaction.Selectun jūs neveidojat funkciju atsauci.


Es domāju, ka Jonatas bija tuvu, viņiem ir tāda pati problēma, mans risinājums, kas darbojas:

this.select = new Atlasīt ({nosacījums: klikšķis, toggleCondition: klikšķis, funkcijas:…, slāņi:…});

Skatīties video: OpenLayer