SuperMap.Control.SelectGraphic

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

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

激活控件,如下方法:

selectGraphic.activate();

注销控件,如下方法:

selectGraohic.deactivate();

Inherits from

Summary
SuperMap.Control.SelectGraphic 要素选择控件,该控件实现在指定的的图层上通过鼠标单击和悬浮选择矢量要素。
Properties
callbacks {Object} 传递给 handlers.graphic 的回调函数,函数中定义了通过鼠标操作矢量要素的方法,供 handlers.graphic 调用。 有关矢量要素支持的混合事件调用方式,请参考 {SuperMap.Handler.Graphic}。使用方式如下:
clickout {Boolean} 是否在地物之外点击,取消选择地物。默认为true。
geometryTypes {Array(String)} 通过该属性限制选中地物的类型。该属性为地物类名的字符串数组。
onSelect {Function} 当地物被选中时可以调用该方法,完成用户指定的任务。要求用户定义具体方法, 该方法接收当前选中要素作为参数。
onUnselect {Function} 当地物被取消选择时可以调用该方法,完成用户指定的任务。要求用户定义具体方法, 该方法接收地物要素作为参数。
repeat {Boolean} 是否重复触发地物选择事件,只在单选非toggle模式下有效。默认为false,表示处于 选中状态的地物不在触发选择事件。
toggle {Boolean} 单击当前选中的要素时,是否取消其选中状态。默认为false。即不取消其选中状态。 仅当hover属性为false有效。
Constructor
SuperMap.Control.SelectGraphic 创建一个选择要素的控件。

Properties

clickout

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

toggle

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

repeat

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

onSelect

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

onUnselect

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

geometryTypes

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

callbacks

{Object} 传递给 handlers.graphic 的回调函数,函数中定义了通过鼠标操作矢量要素的方法,供 handlers.graphic 调用。 有关矢量要素支持的混合事件调用方式,请参考 {SuperMap.Handler.Graphic}。使用方式如下:

var callbacks = {
    over: function(currentGraphic){//todo},
    out: function(currentGraphic){//todo},
    click: function(currentGraphic){//todo},
    clickout: function(lastGraphic){//todo},
};
var graphicLayer = new SuperMap.Layer.Graphics("Graphic Layer", null, {hitDetection: true, useCanvasEvent: false});
var selectGraphic = new SuperMap.Control.SelectGraphic(graphicLayer, {
    onSelect: onGraphicSelected,
    callbacks: callbacks,
});
var map = new SuperMap.Map("map");
map.addControl(selectGraphic);
function onGraphicSelected(currentGraphic){//todo};

上述各事件混合操作说明:

1、如果要素仅需要支持click事件,在实例化SelectGraphic时,只需注册onSelect事件即可,代码如下:

var selectGraphic = new SuperMap.Control.SelectGraphic(graphicLayer, {
    onSelect: onGraphicSelected
});

2、如果要素仅需要支持over事件,在实例化SelectGraphic时,只需注册onSelect事件, 同时设置hover属性为true,代码如下:

var selectGraphic = new SuperMap.Control.SelectGraphic(graphicLayer, {
    onSelect: onGraphicSelected,
});

3、如果要支持混合事件操作,请注册callbacks属性。不过有一点需要注意的就是在 callbacks属性中同时注册了click和dblclick事件,只有click事件起作用。如果 还需要dblclick起作用,请在callbacks属性中取消click注册,修改为使用 onSelect注册,同时确保hover属性为false。

4、在callbacks属性中注册的click、over事件会覆盖同时注册的onSelect事件。

Constructor

SuperMap.Control.SelectGraphic

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

Parameters

layers {SuperMap.Layer.Graphics} graphic图层数组。用于从layer(s)选择要素集。
options {Object}

创建 SelectGraphic 控件,可用如下方法:

   //声明一个矢量图层 graphicLayer,在 graphicLayer 上进行要素选择
   var graphicLayer = new SuperMap.Layer.Graphics("Graphic Layer", null, {hitDetection: true, useCanvasEvent: false});
   //实例化 selectGraphic 控件,调用了 onSelect 和 onUnselect 方法
   //地物被选中时调用 onSelect 方法,地物被取消选中时调用 onUnselect 方法
   selectGraphic = new SuperMap.Control.SelectGraphic(vectorLayer,
       {onSelect:onGraphicSelect,onUnselect:onUnGraphicSelect});
   //map上添加控件
   map.addControl(selectGraphic);
   //激活控件
   selectGraphic.activate();

   //要素被选中时调用此函数,需要传入当前选中要素参数graphic
function onGraphicSelect(graphic) {
    //TODO
}
   //要素被取消选中时调用此函数,需要传入当前要素参数graphic
   function onUnGraphicSelect(graphic) {
    //TODO
   }
绘制要素的鼠标事件的事件处理器。回调函数中定义的与绘制要素相关的如下事件:click, clickout, over, out 和 dblclick等,会在对应操作完成后得到触发通知。
控件类,提供了多种控件,比如比例尺控件,鹰眼控件,缩放条控件等等。 用于处理 Control 事件的事件处理器 Handler,内部封装了一系列的浏览器事件, 在控件(control)实现过程中可调用Handler,通过 active和 deactive两个方法,实现动态的激活和注销。
该图层用于高速渲染带有点符号样式的矢量要素。
Close