2016-08-12 2 views
0

Gibt es eine Möglichkeit, Kontrollkästchen Änderungsereignisse an ein Feature-Select-Event zu binden? Im Folgenden wird dies beispielsweise für die Sichtbarkeit der Ebenen beschrieben.OpenLayers 3 - Auswahlfunktion an Kontrollkästchen binden

<input type="checkbox" id="visible" checked> 
var visible = new ol.dom.Input(document.getElementById('visible')); 
visible.bindTo('checked', layer, 'visible'); 

Ich möchte Benutzern erlauben, Features aus einer Tabelle auszuwählen.

Antwort

0

Fiddle


function getLayerByName(value) { 
    var layer; 
    var found = map.getLayers().getArray().some(function(each){ 
    //discard layers other than ol.layer.Vector 
    if(each instanceof ol.layer.Vector) { 
     layer = each.get('name') === value ? each: undefined; 
    } 
    if(layer) return true; 
    return false; 
    }); 
    return layer ? layer : false; 
} 

function toggleVisibility(element) { 
    var layer = getLayerByName(element.value); 
    if (element.checked) { 
    layer.setVisible(true); 
    } else { 
    layer.setVisible(false); 
    } 
} 
+0

Dank aber das erklärt nicht, wie ich das Kontrollkästchen, um die Funktion wählen Sie Ereignis binden werde. Kannst du es ausarbeiten? Danke vielmals. – MoreScratch

+0

Siehe aktualisierte Antwort - @MoreScratch –

+0

Sorry Jonatas Ich glaube nicht, dass ich das Problem sehr gut erklärt habe. Hier ist was ich mache. Für jedes Feature, das gerendert wird, erstelle ich eine Zeile in einer Tabelle mit einem entsprechenden Kontrollkästchen für jede Zeile. Wenn ein Benutzer das Kontrollkästchen aktiviert, benötige ich das Auswahlsteuerelement, um das Feature auf der Karte auszuwählen. Umgekehrt, wenn ein Benutzer ein Merkmal auf der Karte auswählt, brauche ich das entsprechende Kontrollkästchen in der zu überprüfenden Tabelle. Ich muss mich nicht um die Sichtbarkeit der Ebenen kümmern - die Ebene ist immer sichtbar. – MoreScratch