# new MeasureAreaTool(viewer, options)
面积测量工具
参数:
名称 | 类型 | 默认值 | 描述 |
---|---|---|---|
viewer |
Object | 视图 |
|
options |
Object | 包含以下属性的对象 |
|
callBack |
function | function(result, positions){} | 回调函数,返回测量结果值 |
labelCallBack |
function | function(result, label){} | 测量完毕后提示框的回调函数,可以覆盖提示内容 |
labelStyle |
LabelGraphics | {} | labelStyle 提示框样式,参考 |
lineStyle |
PolylineGraphics | {} | lineStyle 测量线式,参考 |
polygonStyle |
PolygonGraphics | {} | polygonStyle 测量点样式,参考 |
closePointStyle |
Billboard | {} | closePointStyle 删除测量结果图标样式,参考 |
exHeight |
Number | 0 | 附加高程偏移 (避免遮挡) |
disableDepthTestDistance |
Number | Number.POSITIVE_INFINITY | 只要小于这个距离深度检测就会失效,就会一直显示在最前面 不会被遮挡 |
spaceArea |
Boolean | 是否计算空间点面积 默认计算的是球面投影面积 |
|
lineColor |
Cesium.Color | 边线颜色 |
|
areaColor |
Cesium.Color | 选定区域颜色 |
|
isTerrain |
Boolean | false | 是否针对地形,为true时对地形数据进行贴地面积测量,为false时进行空间面积测量 |
xPaneNum |
Number | 32 | 地形贴地面积测量中,向经度方向插入采样点的数量 |
yPaneNum |
Number | 32 | 地形贴地面积测量中,向纬度方向插入采样点的数量 |
classificationType |
Number | 0 | 测量区域的绘制结果显示,区分地形、模型,为0代表在地形上绘制,为1代表在模型上绘制,为2代表同时在地形和模型上绘制 |
style |
Cesium.LabelStyle | Cesium.LabelStyle.FILL | label 文字的样式,支持填充、线框。填充和线框, FILL, OUTLINE, FILL_AND_OUTLINE |
font |
String | '12pt 楷体' | label 的字体以及大小 @see https://html.spec.whatwg.org/multipage/canvas.html#text-styles |
fillColor |
Cesium.Color | Cesium.Color.WHITE | label 的字体颜色 |
outlineColor |
Cesium.Color | Cesium.Color.WHITE | label 文字线框的颜色 |
outlineWidth |
Number | 4.0 | label 的外轮廓边线 |
verticalOrigin |
Cesium.VerticalOrigin | Cesium.VerticalOrigin.BOTTOM | label 的摆放位置 |
showBackground |
Boolean | true | 是否显示 label 的背景 |
backgroundColor |
Cesium.Color | new Cesium.Color(0, 0, 0, 0.4) | lable 背景的颜色 |
pixelOffset |
Cartesian2 | new Cesium.Cartesian2(0, -4) | label 相对于设定点的偏移位置 |
enableScaleByDistance |
Number | true | 是否启用标签随视角高度缩放功能 |
scaleByDistance |
Number | 标签代销随视角高度缩放函数,用户可自定义,不传则使用默认函数,会传入一个当前的相机视角高度,返回一个NearFarScale函数对象,详见下方示例 |
|
isContinueDraw |
Number | true | 是否连续绘制,true:是,false:否 |
showRuntimeResult |
Number | false | 是否显示实时的量算结果,true:是,false:否 |
示例
// ES5引入方式
const { MeasureAreaTool } = zondy.cesium
// ES6引入方式
import { MeasureAreaTool } from "@mapgis/webclient-cesium-plugin"
function callBack(measureResult){
}
var measureAreaTool = new MeasureAreaTool(viewer,
{
callBack:callBack,
isTerrain:true,
xPaneNum:32,
yPaneNum:32,
scaleByDistance: function(height) {
if (height < 30) {
return new NearFarScalar(30, 3, 180, 0);
} else if (height < 60) {
return new NearFarScalar(60, 3, 360, 0);
} else if (height < 120) {
return new NearFarScalar(120, 3, 720, 0);
} else if (height < 240) {
return new NearFarScalar(240, 2, 1200, 0);
} else if (height < 480) {
return new NearFarScalar(480, 2, 2400, 0);
} else if (height < 960) {
return new NearFarScalar(960, 2, 4800, 0);
} else if (height < 1920) {
return new NearFarScalar(1920, 2, 9600, 0);
} else if (height < 3840) {
return new NearFarScalar(3840, 2, 19200, 0);
} else if (height < 7680) {
return new NearFarScalar(7680, 2, 38400, 0);
} else if (height < 15360) {
return new NearFarScalar(15360, 2, 76800, 0);
} else if (height < 30720) {
return new NearFarScalar(30720, 2, 153600, 0);
} else if (height < 61440) {
return new NearFarScalar(61440, 2, 307200, 0);
} else if (height < 122880) {
return new NearFarScalar(122880, 2, 614400, 0);
} else if (height < 245760) {
return new NearFarScalar(245760, 2, 1228800, 0);
} else if (height < 491520) {
return new NearFarScalar(491520, 2, 2457600, 0);
} else if (height < 983040) {
return new NearFarScalar(983040, 2, 4915200, 0);
} else if (height < 1966080) {
return new NearFarScalar(1966080, 2, 9830400, 0);
} else if (height < 3932160) {
return new NearFarScalar(3932160, 1, 19660800, 0);
} else if (height < 7864320) {
return new NearFarScalar(7864320, 1, 39321600, 0);
} else if (height < 15728640) {
return new NearFarScalar(15728640, 1, 78643200, 0);
}
return new NearFarScalar(15728640, 1, 78643200, 0);
}
});
measureAreaTool.startTool(); //开始测量
//measureAreaTool.stopTool(); //结束测量