在OpenLayers中,控件SelectFeature主要用於操作(鼠標移入、移出、單擊、雙擊)矢量圖層(OpenLayers.Layer.Vector)的要素。那么它是如何實現的呢,還是讓我們看代碼吧。
- 首先我們還是先把所有要用到類實例化出來,參考代碼:

1 var map=new OpenLayers.Map("map"); 2 var vectorLayer = new OpenLayers.Layer.Vector(); 3 map.addLayer(vectorLayer);
- 矢量要素的單擊事件,僅需在實例化類時注冊onSelect事件即可,參考代碼:

1 var sf=new OpenLayer.Control.SelectFeature(vectorLayer,{onSelect:function(currentFeature){//todo}}); 2 map.addControl(sf);
- 矢量要素的鼠標移入事件,需要實例化時注冊onSelect事件,同時設置hover屬性為true,參考代碼:

1 var sf=new OpenLayer.Control.SelectFeature(vectorLayer,{onSelect:function(currentFeature){todo},hover:true}); 2 map.addControl(sf);
- 矢量要素的鼠標各種事件的混合操作,如需要鼠標移入、移出、單擊、雙擊等事件,參考代碼:

1 var callbacks = { 2 over:function(currentFeature){}, 3 out:function(currentFeature){}, 4 dblclick:function(currentFeature){} 5 }; 6 var sf = new OpenLayers.Control.SelectFeature(vectorLayer,{ 7 onSelect:function(currentFeature){}, 8 }); 9 map.addControl(sf);
- 對於事件的混合操作行為,我們不能在callbacks對象中同時注冊click和dblclick事件,這樣的話單擊事件會屏蔽雙擊事件。對於下述代碼,dblclick事件永不觸發:

1 var callbacks = { 2 over:function(currentFeature){}, 3 out:function(currentFeature){}, 4 click:function(currentFeature){}, 5 dblclick:function(currentFeature){} 6 }; 7 var sf = new OpenLayers.Control.SelectFeature(vectorLayer,{ 8 onSelect:function(currentFeature){}, 9 }); 10 map.addControl(sf);