2014-05-03 6 views

उत्तर

2

आप अपने परत करने के लिए एक precompose घटना बाध्य कर सकते हैं । यहां से आप अपनी चुनिंदा बातचीत पर एक बदलाव घटना भेज सकते हैं।

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

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

धन्यवाद, +1। क्या आप जानते हैं कि प्रत्येक बार जब कोई सुविधा (अन) चयनित होती है तो परिवर्तन ईवेंट स्वचालित रूप से क्यों नहीं भेजा जाता है ?? –

0

आप featureselected ईवेंट हैंडलर का उपयोग करना चाहते:

यह उदाहरण एक वेक्टर परत पर है: जब एक singleclick घटना अपने नक्शे पर शुरू हो रहा है

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

है कि openlayers 3? घटनाओं को परिभाषित नहीं किया गया है। –

9

यहाँ एक समाधान डैनी की तुलना में अधिक सहज ज्ञान युक्त हो सकता है कि है, और यह भी "आधिकारिक" जिस तरह से हो सकता है, this issue on ol3's GitHub देखने लगता है।

सीधे शब्दों में चुनी गई सुविधाओं को संग्रह करने के लिए श्रोता जोड़ें:

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

जैसा कि गिटहब मुद्दे में बताया गया है, आप सुविधाओं संग्रह पर 'एड' और 'निकालें' ईवेंट की भी सदस्यता ले सकते हैं। –

+0

आप 'e.target.getArray() लंबाई के बजाय' e.target.getLength() 'का उपयोग कर सकते हैं। – congusbongus

संबंधित मुद्दे