SuperMap.Control.SelectFeature

要素选择控件,该控件实现在指定的的图层上通过鼠标单击和悬浮选择矢量要素。

通过 active 和 deactive 两个方法,实现动态的激活和注销,该控件的激活和注销用法如下示例所示:

激活控件,如下方法:

selectFeature.activate();

注销控件,如下方法:

selectFeature.deactivate();

Inherits from

Summary
SuperMap.Control.SelectFeature 要素选择控件,该控件实现在指定的的图层上通过鼠标单击和悬浮选择矢量要素。
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.Control.SelectFeature 创建一个选择要素的控件。
Functions
setLayer 将新的图层附加到控件上,覆盖已经存在的图层。

Properties

multiple

{Boolean} 允许选择多个地物,默认为false,只能选择一个地物。

clickout

{Boolean} 是否在地物之外点击,取消选择地物。默认为true。

toggle

{Boolean} 单击当前选中的要素时,是否取消其选中状态。默认为false。即不取消其选中状态。 仅当hover属性为false有效。

repeat

{Boolean} 是否重复触发地物选择事件,只在单选非toggle模式下有效。默认为false,表示处于 选中状态的地物不在触发选择事件。

hover

{Boolean} 在鼠标悬浮在地物上时,选中地物;移出地物时,取消选中。若设置为 true,鼠标点击将不起作用。默认为false。

box

{Boolean} 是否允许在图层上绘制矩形框选择地物。默认为false。

onSelect

{Function} 当地物被选中时可以调用该方法,完成用户指定的任务。要求用户定义具体方法, 该方法接收当前选中要素作为参数。

onUnselect

{Function} 当地物被取消选择时可以调用该方法,完成用户指定的任务。要求用户定义具体方法, 该方法接收地物要素作为参数。

geometryTypes

{Array(String)} 通过该属性限制选中地物的类型。该属性为地物类名的字符串数组。

callbacks

{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事件。

selectStyle

{Object} styles 样式。(样式里面的label如果没有设置则保留feature自身的label)

Constructor

SuperMap.Control.SelectFeature

创建一个选择要素的控件。

Parameters

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
   }

Functions

setLayer

setLayer: function( layers )

将新的图层附加到控件上,覆盖已经存在的图层。

Parameters

layers {SuperMap.Layer.Vector}数组或者单个图层 {SuperMap.Layer.Vector}
绘制要素的鼠标事件的事件处理器。回调函数中定义的与绘制要素相关的如下事件:click, clickout, over, out 和 dblclick等,会在对应操作完成后得到触发通知。
setLayer: function( layers )
将新的图层附加到控件上,覆盖已经存在的图层。
控件类,提供了多种控件,比如比例尺控件,鹰眼控件,缩放条控件等等。 用于处理 Control 事件的事件处理器 Handler,内部封装了一系列的浏览器事件, 在控件(control)实现过程中可调用Handler,通过 active和 deactive两个方法,实现动态的激活和注销。
该图层用于渲染矢量要素。
Close