要素选择控件,该控件实现在指定的的图层上通过鼠标单击和悬浮选择矢量要素。
通过 active 和 deactive 两个方法,实现动态的激活和注销,该控件的激活和注销用法如下示例所示:
激活控件,如下方法:
selectGraphic.activate();
注销控件,如下方法:
selectGraohic.deactivate();
SuperMap. |
要素选择控件,该控件实现在指定的的图层上通过鼠标单击和悬浮选择矢量要素。 |
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. |
创建一个选择要素的控件。 |
{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事件。
创建一个选择要素的控件。
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 }