SuperMap.Control.Measure

量算类,该类实现在地图上绘制要素, 获取距离或面积的量算操作。 量算过程通过调用事件处理器 Handler 实现在 vector 图层上的距离或面积的量算。

通过 active 和 deactive 两个方法,实现动态的激活和注销。 下面以距离量算为例,具体说明 active 和 deactive 进行控件的激活和注销的方法。

激活控件,可用如下方法:

measureControls.activate();

取消控件激活状态时,可用如下方法:

measureControls.deactivate();

Inherits from

Summary
SuperMap.Control.Measure 量算类,该类实现在地图上绘制要素, 获取距离或面积的量算操作。 量算过程通过调用事件处理器 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.Control.Measure
Functions
cancel 取消量算,绘制的要素也会被擦除。
deactivate 取消激活该控件。
setImmediate 调用该方法可以实现动态设置量算过程是否时时显示量算结果。

Constants

EVENT_TYPES

{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信息。

Properties

handlerOptions

{Object} 设置控件的事件处理器的非默认属性的值。

displaySystem

{String} 测量单位,支持’english’, ‘metric’, 和 ‘geographic’。默认为metric。

geodesic

{Boolean} 计算是投影到球面还是平面的几何图形近似测地长度。通过调用 SuperMap.Projection 将不同的投影坐标系转换成 WGS84 。默认为false,即投影到平面,设为true,则是投影到球面。

persist

{Boolean} 是否在量算结束后保留绘制的要素。当新的量算开始,控件取消激活获取取消量算时会清除绘制的要素。默认为:false,不保留。

immediate

{Boolean} 当该属性为true时,量算过程中时时显示结果,同时会触发 “measurepartial” 事件。默认为false。

Constructor

SuperMap.Control.Measure

Parameters

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() 方法注销控件。

Functions

deactivate

deactivate: function()

取消激活该控件。

cancel

cancel: function()

取消量算,绘制的要素也会被擦除。

setImmediate

setImmediate: function( immediate )

调用该方法可以实现动态设置量算过程是否时时显示量算结果。

deactivate: function()
取消激活该控件。
cancel: function()
取消量算,绘制的要素也会被擦除。
setImmediate: function( immediate )
调用该方法可以实现动态设置量算过程是否时时显示量算结果。
控件类,提供了多种控件,比如比例尺控件,鹰眼控件,缩放条控件等等。 用于处理 Control 事件的事件处理器 Handler,内部封装了一系列的浏览器事件, 在控件(control)实现过程中可调用Handler,通过 active和 deactive两个方法,实现动态的激活和注销。
用于处理Control事件的事件处理器。 事件处理器(Handler)内部封装了浏览器事件监听及其相应的处理方法,当一个事件处理器被激活时, Handler中定义的浏览器事件监听及其相应的方法被注册到浏览器监听器,在浏览器事件被触发之后, 首先会调用Handler中处理该浏览器事件的方法来做事件的确认和信息封装,然后才再传递给Control等做具体响应处理。 当一个处理器被注销,这些方法在事件监听器中也会相应的被取消注册。
Close