2014-05-03 11 views

risposta

2

è possibile associare un evento precomposizione al vostro livello quando un evento SingleClick viene attivato sulla mappa . Da qui puoi inviare un evento di modifica all'interazione selezionata.

yourmap.on('singleclick',function(event)){ 
    layer.once('precompose',function(event){ 
     yourSelectInteraction.dispatchChangeEvent(); 
    } 
} 

yourSelectInteraction.on('change',function(){ 
    //Do stuff with your selected features here 
} 
+0

Grazie, +1. Sai perché l'evento di modifica non viene inviato automaticamente ogni volta che una funzione è (non selezionata) ?? –

0

si desidera utilizzare il gestore featureselected eventi:

Questo esempio è su un livello vettoriale:

featuresLayer.events.on({ 
    'featureselected': function (e) { 
     console.log(e); 
    } 
}); 
+3

è che OpenLayers 3? gli eventi non sono definiti. –

9

Ecco una soluzione che potrebbe essere più intuitivo rispetto Danny, e sembra anche essere il modo "ufficiale", vedi this issue on ol3's GitHub.

È sufficiente aggiungere l'ascoltatore alla raccolta di elementi selezionati:

mySelectInteraction.getFeatures().on('change:length', function(e) { 
     if (e.target.getArray().length === 0) { 
      alert("no selected feature"); 
     } else { 
      var feature = e.target.item(0); 
      alert(feature.getId()); //or do something better with the feature ! 
     } 
    }); 
+3

Come menzionato nel problema GitHub, puoi anche iscriverti agli eventi "aggiungi" e "rimuovi" nella raccolta delle funzionalità. –

+0

È possibile utilizzare 'e.target.getLength()' invece di 'e.target.getArray(). Length' – congusbongus

Problemi correlati