control~Measure(options)

测量控件,支持空间测量、贴表面测量两种模式,测量类型包括距离、面积、测高和坡度。

Summary

Methods:
activate

激活测量控件,只有将控件添加到地图上时才起作用。

clear

清除所有测量结果。

deactivate

禁用测量控件,取消测量。

getClosePic

获得当前的关闭图标的路径或base64编码字符串

getControlType

返回控件的类型

getGroundLayer

获取测量控件在贴表面测量时,绘制的要素所在的贴表面矢量图层

getLayer

获取测量控件在空间测量时,绘制的要素所在的矢量图层

on

注册测量事件,注意新注册的测量事件会覆盖原有的测量事件

setClosePic

设置关闭图标的路径或base64编码字符串

setStyle

设置绘制时的样式

startMeasureArea

开始测量面积

startMeasureDistance

开始测量距离

startMeasureHeight

开始测量两点间的垂直高度、水平距离和空间距离

startMeasureSlope

开始测量三点构成的三角形所在平面的坡度。坡度量算,与测量控件模式无关。

stopMeasure

停止测量。

un

取消已注册的测量事件

Constructor

new Measure(options)

构造函数,创建一个测量控件实例。

Parameters:
Name Type Description
options Object

可选项

Name Type Description
mode String

测量模式,'2D'、'3D',其中'2D'测出来的是空间距离或者面积,'3D'测出来的是贴地图中已经加载的图层中数据表面的距离或者面积。默认'2D'。支持直接通过修改Measure控件的mode属性,修改测量模式。当测量模式为'3D'时,如果正在测量的图形部分节点在地图当前范围外,会出现测量结果为0等不准确的情况,请保持测量的图形所有节点全部在地图范围内。另外,'3D'模式下,请设置三维图层的baseGroundLayer属性为true,使测量的矢量图层可以贴在三维图层表面渲染。

unit String

测量单位,当前支持"m"(米)、"km"(千米)、"nmi"(海里)、"mi"(英里)、"degrees"(度,用于测量坡度),默认值为"km"。长度测量结果的单位为所设的测量单位,比如"米";面积测量结果的单位为测量单位的平方,比如"平方千米"。
支持直接通过修改Measure控件的unit属性,修改测量结果的单位。

autoConvertUnit Boolean

是否自动转换单位,默认为true,主要用于测量结果在"km"到"m"之间自动转换。

precision Number

精度,当测量模式是'3D'时,测距或者测面积的精度。精度越高,越准确,但是耗费的性能也越多,默认1。

measureLabelStyle String

显示测量结果的dom元素的样式,优先级高于measureLabelClass。measureLabelStyle和measureLabelClass均不指定时,使用默认值:
"font: 12px arial, simsun; border: 0px solid rgb(255, 1, 3); background-color: rgb(255, 255, 255); padding: 3px 23px 3px 3px; box-shadow: rgba(0, 0, 0, 0.5) 0px 1px 5px; border-radius: 2px;"。

measureLabelClass String

显示测量结果的dom元素的样式类名,例:"measure-label",优先级低于measureLabelStyle。如果css属性需要高于style,对具体属性使用!important提升优先级

closeDivStyle String

展示测量结果的dom元素中的关闭按钮的样式,优先级高于closeDivClass。closeDivStyle和closeDivClass均不指定时,使用默认值:
"width: 20px; height: 20px; position: absolute; top: 0px; right: 0px; background-size: 100% 100%;"。

closeDivClass String

展示测量结果的dom元素中的关闭按钮的样式类名,例:"close-div",优先级低于closeDivStyle。如果css属性需要高于style,对具体属性使用 !important 提升优先级

closePic String

展示测量结果的dom元素中关闭按钮的png路径或base64编码后的字符串,
默认值为 'data:image/png;base64,iVBORw0KGgoAAA
ANSUhEUgAAABQAAAAVCAIAAADJt1n/AAAAtklEQVR42mP
8//8/A+ng9Zu3FVUtjORphugnXzMQUFdzZydDQgKDuDi6
wpcvGZYtYygsxK152jSG7GwGJSWGY8dQ9AN1Wlkx3LvHM
GsWQ2oqDs1wRcj6sQpidzaaUiDAoRNHgMH1c3ODuF+/Yt
WJO7SB+pWVQdqAAGjE3btYgpAGmsl3NvkBRlFUEUwkc+Y
wJCfjdnZ3N0NcHFnJk0QwQJpfvya3MADqLK9uZmRkEyHD
vSDEyAgA1PWx8n18D9YAAAAASUVORK5CYII='

vecStyle module:style~Style

测量控件测量时,绘制的矢量要素的样式。测量过程中单击添加的点、线、多边形等的表现形式,将取决于该样式符号,具体请参考Style说明。

tipStyle String

鼠标提示控件的样式,优先级高于tipClass。当传入鼠标提示控件时,传入的tipStyle或tipClass不再使用。

tipClass String

鼠标提示控件的样式类名,例:"measure-tip",优先级低于tipStyle。当传入鼠标提示控件时,传入的tipStyle或tipClass不再使用。

tipControl module:control~MouseTipControl

鼠标提示控件。

height Number

高度,将作为贴表面测量时绘制的要素的height属性的值,单位为米,默认200。该参数影响贴表面绘制的效果,参考{module:layer~GroundVectorLayer}。

Example
let measureControl = new hmap.control.Measure();
map.addControl(measureControl)

Methods

activate()

激活测量控件,只有将控件添加到地图上时才起作用。

clear()

清除所有测量结果。

deactivate()

禁用测量控件,取消测量。

getClosePic() → {String}

获得当前的关闭图标的路径或base64编码字符串

Returns:
String -

当前的关闭图标的路径或base64编码字符串

getControlType() → {String}

返回控件的类型

Returns:
String -

控件类型的名称。

getGroundLayer() → {module:layer~GroundVectorLayer|null}

获取测量控件在贴表面测量时,绘制的要素所在的贴表面矢量图层

Returns:
module:layer~GroundVectorLayer | null -

矢量图层,当测量控件没有添加到地图上时,返回null。

getLayer() → {module:layer~VectorLayer|null}

获取测量控件在空间测量时,绘制的要素所在的矢量图层

Returns:
module:layer~VectorLayer | null -

矢量图层,当测量控件没有添加到地图上时,返回null。

on(type, callback)

注册测量事件,注意新注册的测量事件会覆盖原有的测量事件

Parameters:
Name Type Description
type String

事件类型,具体类型参考该控件的measureEventType属性取值,当前有 DISTANCESTART:开始测距、DISTANCEMIDDLE:测距过程中单击添加节点触发,
DISTANCEFINISHED:结束测距、AREASTART:开始测面积、AREAMIDDLE:测面积过程中单击添加节点触发、AREAFINISHED:结束测面积、HEIGHTSTART:开始测高、HEIGHTFINISHED:结束测高。

callback function

具体回调函数

Example
//事件回调枚举:
//measureEventType.DISTANCESTART    距离测量方法调用成功时触发
//measureEventType.DISTANCEMIDDLE   距离测量,测量过程中单击添加中间节点时触发
//measureEventType.DISTANCEFINISHED 距离测量绘制结束时触发
//measureEventType.AREASTART        面积测量方法调用成功时触发
//measureEventType.AREAMIDDLE       面积测量,测量过程中单击添加中间节点时触发
//measureEventType.AREAFINISHED     面积测量绘制结束时触发
//measureEventType.HEIGHTSTART      测高开始时触发
//measureEventType.HEIGHTFINISHED   测高结束时触发
//measureEventType.SLOPESTART       坡度测量,开始时触发
//measureEventType.SLOPEMIDDLE      坡度测量,测量过程中单击添加节点时触发
//measureEventType.SLOPEFINISHED    坡度测量,结束时触发
measureControl.on(measureControl.measureEventType.DISTANCESTART,function(){
     console.log("start");
})

setClosePic(closePic)

设置关闭图标的路径或base64编码字符串

Parameters:
Name Type Description
closePic String

关闭图标的路径或base64编码字符串

Example
const closePic ='../imgs/xxx.png';
measureControl.setClosePic(closePic);

setStyle(style)

设置绘制时的样式

Parameters:
Name Type Description
style module:style~Style

绘制样式

Throws:

当传入的参数非样式module:style~Style对象时,抛出异常;

startMeasureArea()

开始测量面积

startMeasureDistance()

开始测量距离

startMeasureHeight()

开始测量两点间的垂直高度、水平距离和空间距离

startMeasureSlope()

开始测量三点构成的三角形所在平面的坡度。坡度量算,与测量控件模式无关。

stopMeasure()

停止测量。

un(type)

取消已注册的测量事件

Parameters:
Name Type Description
type String

事件类型,具体类型参考该控件的measureEventType属性取值,具体参考on方法说明。