2017-06-29 2 views
0

Ich möchte Ereignis programmgesteuert auslösen, aber ich weiß nicht wie. Also, das ist, wie ich Auswahl Interaktion erstellen:Wie feuern auswählt Ereignis programmgesteuert

var selection = new ol.interaction.Select({ 
    ... 
}); 

selection.on('select', function (event) { 
    ... here is some action or event I want to trigger 
}); 

In anderen Teil meines Codes, schiebe ich neue Features für die Auswahl:

selection.getFeatures().push(new_feature); 

Was ich will ist select Ereignis auszulösen. Wie kann ich das machen?

Antwort

2

Sie sollten nicht dieses Ereignis manuell auslösen. Es sollte an der Interaktion selbst liegen, um sie auszulösen. Was ich stattdessen tun würde, ist eine andere Art von Ereignis zu hören.

Die ol.interaction.Select hat eine Merkmalssammlung, d.h. eine ol.Collection. Dieses Objekt feuert add und remove Ereignisse, wenn die Interaktion Merkmale selbst auswählt, d. H. Durch das Ergebnis seiner eigenen Handler, und durch das Ergebnis der manuell geschoben/entfernt.

Hier ist ein Ausschnitt:

var featuresCollection = selection.getFeatures(); 
featuresCollection.on('add', function() { 
    // do what you want on add 
}); 
featuresCollection.on('remove', function() { 
    // do what you want on remove 
}); 

Das ist ein bisschen mehr Management erfordern würde, als die Callback-Methode ist Feuer pro Merkmal, aber am Ende würde Sie in der Lage sein zu tun, was Sie tun mögen, .

+0

Danke! Aber es scheint, als ob ich das Ereignis mit dispatchEvent-Methode ausgelöst habe. – Jacobian

Verwandte Themen