要素选择控件,该控件实现在指定的的图层上通过鼠标单击和悬浮选择矢量要素。
通过 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 )