要素选择控件,该控件实现在指定的的图层上通过鼠标单击和悬浮选择矢量要素。
通过 active 和 deactive 两个方法,实现动态的激活和注销,该控件的激活和注销用法如下示例所示:
激活控件,如下方法:
selectFeature.activate();
注销控件,如下方法:
selectFeature.deactivate();
SuperMap. |
要素选择控件,该控件实现在指定的的图层上通过鼠标单击和悬浮选择矢量要素。 |
Properties | |
box | {Boolean} 是否允许在图层上绘制矩形框选择地物。默认为false。 |
callbacks | {Object} 传递给 handlers.feature 的回调函数,函数中定义了通过鼠标操作矢量要素的方法,供 handlers.feature 调用。 有关矢量要素支持的混合事件调用方式,请参考 {SuperMap.Handler.Feature}。使用方式如下: |
clickout | {Boolean} 是否在地物之外点击,取消选择地物。默认为true。 |
geometryTypes | {Array(String)} 通过该属性限制选中地物的类型。该属性为地物类名的字符串数组。 |
hover | {Boolean} 在鼠标悬浮在地物上时,选中地物;移出地物时,取消选中。若设置为 true,鼠标点击将不起作用。默认为false。 |
multiple | {Boolean} 允许选择多个地物,默认为false,只能选择一个地物。 |
onSelect | {Function} 当地物被选中时可以调用该方法,完成用户指定的任务。要求用户定义具体方法, 该方法接收当前选中要素作为参数。 |
onUnselect | {Function} 当地物被取消选择时可以调用该方法,完成用户指定的任务。要求用户定义具体方法, 该方法接收地物要素作为参数。 |
repeat | {Boolean} 是否重复触发地物选择事件,只在单选非toggle模式下有效。默认为false,表示处于 选中状态的地物不在触发选择事件。 |
selectStyle | {Object} styles 样式。(样式里面的label如果没有设置则保留feature自身的label) |
toggle | {Boolean} 单击当前选中的要素时,是否取消其选中状态。默认为false。即不取消其选中状态。 仅当hover属性为false有效。 |
Constructor | |
SuperMap. |
创建一个选择要素的控件。 |
Functions | |
setLayer | 将新的图层附加到控件上,覆盖已经存在的图层。 |
{Object} 传递给 handlers.feature 的回调函数,函数中定义了通过鼠标操作矢量要素的方法,供 handlers.feature 调用。 有关矢量要素支持的混合事件调用方式,请参考 {SuperMap.Handler.Feature}。使用方式如下:
var callbacks = { over: function(currentFeature){//todo}, out: function(currentFeature){//todo}, click: function(currentFeature){//todo}, clickout: function(lastFeature){//todo}, rightclick:function(currentFeature){//todo}, dblclick: function(currentFeature){//todo} }; var vectorLayer = new SuperMap.Layer.Vector(); var selectFeature = new SuperMap.Control.SelectFeature(vectorLayer, { onSelect: onFeatureSelected, callbacks: callbacks, hover: false }); var map = new SuperMap.Map("map"); map.addControl(selectFeature); function onFeatureSelected(currentFeature){//todo};
上述各事件混合操作说明:
1、如果要素仅需要支持click事件,在实例化SelectFeature时,只需注册onSelect事件即可,代码如下:
var selectFeature = new SuperMap.Control.SelectFeature(vectorLayer, { onSelect: onFeatureSelected });
2、如果要素仅需要支持over事件,在实例化SelectFeature时,只需注册onSelect事件, 同时设置hover属性为true,代码如下:
var selectFeature = new SuperMap.Control.SelectFeature(vectorLayer, { onSelect: onFeatureSelected, hover:true });
3、如果要支持混合事件操作,请注册callbacks属性。不过有一点需要注意的就是在 callbacks属性中同时注册了click和dblclick事件,只有click事件起作用。如果 还需要dblclick起作用,请在callbacks属性中取消click注册,修改为使用 onSelect注册,同时确保hover属性为false。
4、在callbacks属性中注册的click、over事件会覆盖同时注册的onSelect事件。
创建一个选择要素的控件。
layers | {SuperMap.Layer.Vector} vector图层数组。用于从layer(s)选择要素集。 |
options | {Object} |
创建 SelectFeature 控件,可用如下方法:
//声明一个矢量图层 vectorLayer,在 vectorLayer 上进行要素选择 vectorLayer = new SuperMap.Layer.Vector("Vector Layer"); //实例化 selectFeature 控件,调用了 onSelect 和 onUnselect 方法 //地物被选中时调用 onSelect 方法,地物被取消选中时调用 onUnselect 方法 selectFeature = new SuperMap.Control.SelectFeature(vectorLayer, {onSelect:onFeatureSelect,onUnselect:onUnFeatureSelect}); //map上添加控件 map.addControl(selectFeature); //激活控件 selectFeature.activate(); //要素被选中时调用此函数,需要传入当前选中要素参数feature function onFeatureSelect(feature) { //TODO } //要素被取消选中时调用此函数,需要传入当前要素参数feature function onUnFeatureSelect(feature) { //TODO }
setLayer: function( layers )
将新的图层附加到控件上,覆盖已经存在的图层。
layers | {SuperMap.Layer.Vector}数组或者单个图层 {SuperMap.Layer.Vector} |
将新的图层附加到控件上,覆盖已经存在的图层。
setLayer: function( layers )