【二次开发】CityMaker交互操作——测量
**
CityMaker测量
**
一、原理
CityMaker平台封装了几种交互模式,包括飞行、步行、拾取和测量等。在测量模式下,通过设置不同的测量模式即可实现不同的测量方式。包括:
1. 任意点测距(gviMeasureAerialDistance)
2. 水平空间测距(gviMeasureHorizontalDistance)
3. 垂直空间测量(gviMeasureVerticalDistance)
4. 坐标测量(gviMeasureCoordinate)
5. 投影面积(gviMeasureArea)
6. 地表距离(gviMeasureGroundDistance)*必须加载地形
7. 地表面积(gviMeasureGroundArea )*必须加载地形
8. 地形通视分析(gviMeasureGroupSightLine )*必须加载地形
除了gviMeasureGroupSightLine(地形通视分析),其他的测量功能都支持同时显示多个测量结果,直至切换测量模式时清除。
二、关键代码
1. .Net代码
/// <summary>
/// 设置水平量测
/// <param name="axRenderControl"></param>(axRenderControl1为加载的三维控件)
private void HorizontalDistanceMeasurement(AxRenderControl axRenderControl)
{
//1)设置交互模式为测量模式
axRenderControl.InteractMode = gviInteractMode.gviInteractMeasurement;
//2)设置测量模式
axRenderControl.MeasurementMode = gviMeasurementMode.gviMeasureHorizontalDistance;
// axRenderControl.MeasurementMode = gviMeasurementMode.gviMeasureArea;//面积量测
//axRenderControl.MeasurementMode = gviMeasurementMode.gviMeasureCoordinate;//坐标量测
// axRenderControl.MeasurementMode = gviMeasurementMode.gviMeasureVerticalDistance;//高度量测
}
2. js代码
/*设置水平量测 */
function MeasureHorizontalDistanceMeasurement(){
__g = document.getElementById("__g"); //(__g对象即为加载的三维控件)
__g.interactMode = 3; // 设置交互模式为测量模式gviInteractMode.gviInteractMeasurement
__g.measurementMode =1 ;// 设置测量模式为水平量测gviMeasurementMode.gviMeasureHorizontalDistance
// __g.measurementMode =5 ;// 2)设置测量模式为水平量测gviMeasureArea
// __g.measurementMode =3 ;// 2)设置测量模式为水平量测 gviMeasureCoordinate
// __g.measurementMode =2 ;// 2)设置测量模式为水平量测 gviMeasureVerticalDistance
}