量算类,该类实现在地图上绘制要素, 获取距离或面积的量算操作。 量算过程通过调用事件处理器 Handler 实现在 vector 图层上的距离或面积的量算。
通过 active 和 deactive 两个方法,实现动态的激活和注销。 下面以距离量算为例,具体说明 active 和 deactive 进行控件的激活和注销的方法。
激活控件,可用如下方法:
measureControls.activate();
取消控件激活状态时,可用如下方法:
measureControls.deactivate();
| SuperMap. |
量算类,该类实现在地图上绘制要素, 获取距离或面积的量算操作。 量算过程通过调用事件处理器 Handler 实现在 vector 图层上的距离或面积的量算。 |
| Constants | |
| EVENT_TYPES | {Array(String)} 支持的事件类型。通过下面的语法注册事件。 |
| Properties | |
| displaySystem | {String} 测量单位,支持’english’, ‘metric’, 和 ‘geographic’。默认为metric。 |
| geodesic | {Boolean} 计算是投影到球面还是平面的几何图形近似测地长度。通过调用 SuperMap.Projection 将不同的投影坐标系转换成 WGS84 。默认为false,即投影到平面,设为true,则是投影到球面。 |
| handlerOptions | {Object} 设置控件的事件处理器的非默认属性的值。 |
| immediate | {Boolean} 当该属性为true时,量算过程中时时显示结果,同时会触发 “measurepartial” 事件。默认为false。 |
| persist | {Boolean} 是否在量算结束后保留绘制的要素。当新的量算开始,控件取消激活获取取消量算时会清除绘制的要素。默认为:false,不保留。 |
| Constructor | |
| SuperMap. |
|
| Functions | |
| cancel | 取消量算,绘制的要素也会被擦除。 |
| deactivate | 取消激活该控件。 |
| setImmediate | 调用该方法可以实现动态设置量算过程是否时时显示量算结果。 |
{Array(String)} 支持的事件类型。通过下面的语法注册事件。
control.events.register(type, obj, listener);
支持的事件类型:
| measure | 当量算完成时触发。需要传入当前绘制要素的geometry信息作为参数, 返回measure、units、order、geometry信息。其中: |
measure:表示测量结果;
units:测量单位;
order:order=1时表示距离测量,order=2时表示面积测量
geometry:绘制后的几何图形信息。
| measurepartial | 当点被添加到量算过程中时触发。必须传入绘制要素的geometry信息参数, 也可以传入当前绘制要素的geometry信息和添加的最后一个点的geometry信息。 |
| handler | {SuperMap.Handler} 量算时使用的绘图方法。 |
| options | {Object} 设置该类支持的属性,当用户不使用默认值时,可通过此参数设置。 |
var map = new SuperMap.Map("map");
//实例化 measureControls 控件,用于测量距离和面积
measureControls = {
//距离量算
line:new SuperMap.Control.Measure(
SuperMap.Handler.Path, {persist:true}
),
//面积量算
polygon:new SuperMap.Control.Measure(
SuperMap.Handler.Polygon,{persist:true}
)
};
var control;
//监听 measure 和 measurepartial 两个事件,量算完成时触发时
//量算完成时触发 measure 事件,当点被添加到量算过程中时触发 measurepartial
for(var key in measureControls){
control = measureControls[key];
control.events.on({
"measure": handleMeasure,
"measurepartial": handleMeasurements
});
//添加控件到 map 上
map.addControl(control);
}
//激活控件
control.activate();
//定义 handleMeasurements 函数,触发 measure 事件会调用此函数
//事件参数 event 包含了测量要素 geometry 信息
function handleMeasure(event) {
//获取传入参数 event 的 geometry 信息
var geometry = event.geometry;
//TODO 具体操作方法用户可根据需要自行定义
}
//定义 handleMeasurements 函数,触发 measurepartial 事件会调用此函数
//事件参数 event 包含了测量要素 geometry 信息
function handleMeasurements(event) {
//获取传入参数 event 的 geometry 信息
var geometry = event.geometry;
//获取传入参数 event 的 type 信息(click指示的是点击事件,move指示的是移动事件)
var type=event.type;
//TODO 具体操作方法用户可根据需要自行定义
}
在用户测量结束后,可用 deactivate() 方法注销控件。
取消激活该控件。
deactivate: function()
取消量算,绘制的要素也会被擦除。
cancel: function()
调用该方法可以实现动态设置量算过程是否时时显示量算结果。
setImmediate: function( immediate )