2.3.9 地表距离测量


地表距离测量

地表距离测量是指将三维空间中两个点形成的连线覆盖到地形表面,然后进行距离量算的功能。可以在场景中点击多个点,SDK会对根据点的顺序形成多条线段并量算出各条线段的距离值。

主要包括添加(创建)、更新、显隐、删除和获取结果5种操作。

注意:可创建空的测量图层,也可创建预设的测量图层,如需创建预设测量图层,则IsLoad, IsActive, Points 三个参数需要同时配置

下图是地表距离测量效果:

  

参数说明

地表距离测量可配置的参数如下表所示:

配置项 配置说明 值类型 备注
LayerOptionsName 图层配置对象名称 string 分析图层需配置为:AnalysisLayerOptions
DataSourceTypeName 数据源类型 string as_surfacedistance代表地表距离测量
PointColor 点颜色 R,G,B,A 颜色取值范围在0-1.0之间,如 "0.9,0.8,0.8,1.0"
PointSize 点大小 float 点大小取值范围在1-10之间
LineColor 线颜色 R,G,B,A 颜色取值范围在0-1.0之间,如 "0.9,0.8,0.8,1.0"
LineWidth 线宽度 float 线宽度取值范围在1-10之间
AltituLineColor 贴地线颜色 R,G,B,A 颜色取值范围在0-1.0之间,如 "0.9,0.8,0.8,1.0"
AltituLineWidth 贴地线宽度 float 线宽度取值范围在1-10之间
AltituLineStipple 贴地线样式 short 贴地线显示样式,可控制实线/虚线显示。取值范围-32768-32767之间。-1-实线,其他-虚线。默认-1
SamplingInterval 采样间隔 float 贴地线的采样间隔
IsDepthTest 是否开启深度测试 bool 默认为false。false不开启,结果会浮在场景上,true实际显示位置
TextVisible 是否显示文字 bool 默认为false。如为false,则TextLiftUpStyle配置都无效
TextLiftUp 文字抬高高度 float 默认为0.0
Style 添加样式 string 配置文字样式,配置信息参考文字样式配置
IsLoad 是否初始化加载点 bool 默认为false
IsActive 是否激活分析 bool 默认为true,表示是否可操作场景进行绘制
Points 坐标点集 x,y,z列表 需传入经度,纬度,高程坐标集,中间用;分隔,并以;结尾
IsWorld 是否世界坐标点 bool 传入的坐标是否是世界坐标。true-世界坐标,false-经纬度坐标。默认为true

获取结果说明

地表距离测量可以通过图层对象的GetLayerResult() 方法获取结果。获取的结果值对象参数如下表所示:

配置项 配置说明 值类型 备注
DataSourceTypeName 数据源类型 string as_surfacedistance代表地表距离测量
ClickPoints 点击点坐标 x,y,z列表 鼠标点击场景形成的关键点的经度,纬度,高程坐标列表,中间用;分隔,并以;结尾
DistanceResult 测量结果 double列表 各个线段的距离结果值,中间用,分隔。单位跟配置的MeasureUnit 一致

代码调用示例

Javascript调用

//创建地表距离测量
var surfaceDistanceMeasure = null;
function CreateSurfaceDistanceMeasure()
{
    //创建图层配置信息
    var tlo = map.CreateLayerOptions("surfaceDistanceMeasure");//创建分析图层配置,给配置起个名称,任意名称
    tlo.AddConfig("LayerOptionsName", "AnalysisLayerOptions");//创建配置类型, AnalysisLayerOptions代表分析图层数据配置,必须是此键值对
    tlo.AddConfig("DataSourceTypeName", "as_surfacedistance");//数据源类型,代表垂直距离测量,必须是此键值对
    tlo.AddConfig("PointColor", "0.0,0.0,1.0,1.0");//设置点击点的颜色透明度(RGBA) 1为不透明 0为透明
    tlo.AddConfig("PointSize", "5"); //设置点击点的大小
    tlo.AddConfig("LineColor","0,1,0,1.0");//线颜色
    tlo.AddConfig("LineWidth", "2"); //线宽(0-10)
    tlo.AddConfig("AltituLineColor","0,1,1,1.0");//贴地线颜色
    tlo.AddConfig("AltituLineWidth", "5"); //贴地线宽度(0-10)
    tlo.AddConfig("AltituLineStipple", "-1"); //线条类型,-1 实线 1 虚线
    tlo.AddConfig("SamplingInterval","1");//采样间隔
    tlo.AddConfig("MeasureUnit","0");//显示单位。0-米;1-公里;2-海里
    tlo.AddConfig("MeasureUnitLanguage","0");//显示语言。0-英文;1-中文
    tlo.AddConfig("IsDepthTest","true");//是否开启深度测试。false不开启,结果会浮在场景上,true实际显示位置    
    tlo.AddConfig("TextVisible", "true");//文字是否被显示
    tlo.AddConfig("TextLiftUp", "20");//文字显示的抬高高度
    //tlo.AddConfig("IsActive","false");//是否激活
    //tlo.AddConfig("IsLoad","true" );//是否重新加载 Points 配置项所对应的点
    //tlo.AddConfig("Points","120.16119,30.261164,17.042929;120.16151,30.261482,28.522919;");//线段点集
    //tlo.AddConfig("IsWorld","false" );//传入的点位是否为世界坐标,true为世界坐标,false为经纬度坐标

    //创建文字符号
    var pSymbol = map.CreateSymbol("AnalysisTextSymbol");//创建文字符号,分析文字为:AnalysisTextSymbol
    pSymbol.AddConfig("FillingColor", "1.0, 0.0, 0.0, 0.0");//设置文字颜色(RGBA)
    pSymbol.AddConfig("Font", "C:\\WINDOWS\\Fonts\\STXIHEI.TTF");//设置字体类型,字体文件一定要存在
    pSymbol.AddConfig("Size", "20"); //字体精度大小
    pSymbol.AddConfig("CharacterSize", "10.0"); //文字大小
    pSymbol.AddConfig("CharacterMode", "1"); //取值 1 -- 始终朝向相机
    pSymbol.AddConfig("AlignmentMode", "5"); //文字对齐方式
    pSymbol.AddConfig("AxisAlignment", "6"); //旋转轴 0 - 7 , 6: 自动
    pSymbol.AddConfig("RemoveDuplicateLabels", "false");//去重复            
    pSymbol.AddConfig("IsEmbolden", "false"); //字体是否加粗
    pSymbol.AddConfig("IsTransform", "true"); //字体是否为斜体
    pSymbol.AddConfig("IsUnderline", "false"); //字体是否有下划线
    pSymbol.AddConfig("IsBack", "false"); //是否设置背景色
    pSymbol.AddConfig("HorizonSpaceSize", "5");//字符水平间隔距离
    pSymbol.AddConfig("FieldPrecision","2");//显示精度
    pSymbol.AddConfig("IsDepthTest","false");//是否开启深度测试。false不开启,结果会浮在场景上,true实际显示位置
    pSymbol.AddConfig("MeasureUnitType","0");//显示单位。0-米;1-公里;2-海里
    pSymbol.AddConfig("MeasureUnitLanguage","1");//显示语言。0-英文;1-中文
    pSymbol.AddConfig("CoordinateSystemType","0");//显示参考系。 0-地理经纬度;1-投影坐标;2-世界坐标系;3-地心空间直角坐标系XYZ

    //创建文字样式
    var pStyle = map.CreateStyle("Text"); //创建样式
    pStyle.AddSymbol("AnalysisTextSymbol", pSymbol.GetConfig());//将符号对象添加到样式,第一参数为符号类型
    tlo.AddConfig("Style", pStyle.GetConfig());//添加样式

    surfaceDistanceMeasure = map.CreateLayer("AnalysisLayer", tlo);//创建分析图层,第一项参数必须为AnalysisLayer
    map.AddLayer(surfaceDistanceMeasure);//添加分析图层
}

//更新地表地表距离测量
function  UpdateSurfaceDistanceMeasure()
{ 
    if( null != surfaceDistanceMeasure )
    {
        //创建图层配置信息
        var tlo = map.CreateLayerOptions("surfaceDistanceMeasure");//创建分析图层配置,给配置起个名称,任意名称

        tlo.AddConfig("LayerOptionsName", "AnalysisLayerOptions");//创建配置类型, AnalysisLayerOptions代表分析图层数据配置,必须是此键值对
        tlo.AddConfig("DataSourceTypeName", "as_surfacedistance");//数据源类型,代表垂直距离测量,必须是此键值对
        tlo.AddConfig("PointColor", "0.0,0.0,1.0,1.0");//设置点击点的颜色透明度(RGBA) 1为不透明 0为透明
        tlo.AddConfig("PointSize", "5"); //设置点击点的大小
        tlo.AddConfig("LineColor","1.0,1.0,0,1.0");//线颜色
        tlo.AddConfig("LineWidth", "10"); //线宽(0-10)
        tlo.AddConfig("AltituLineColor","1,1,1,1.0");//贴地颜色
        tlo.AddConfig("AltituLineWidth", "10"); //贴地线颜色
        tlo.AddConfig("AltituLineStipple", "-1"); //线条类型,-1 实线 1 虚线
        tlo.AddConfig("SamplingInterval","1" );//采样间隔
        tlo.AddConfig("TextVisible", "true");//文字是否被显示
        tlo.AddConfig("TextLiftUp", "40");//文字显示的抬高高度

        //下列三个配置可选
        //tlo.AddConfig("IsLoad","true" );//是否加载点坐标
        //tlo.AddConfig("IsWorld","false" );//传入的点位是否为世界坐标,true为世界坐标,false为经纬度坐标
        //tlo.AddConfig("Points","120.16119,30.261164,17.042929;120.16151,30.261482,28.522919;");//点坐标
        //tlo.AddConfig("IsActive","false" );//是否激活测量

        //创建文字符号
        var pSymbol = map.CreateSymbol("AnalysisTextSymbol");//创建文字符号,分析文字为:AnalysisTextSymbol
        pSymbol.AddConfig("FillingColor", "1.0, 0.0, 0.0, 0.0");//设置文字颜色(RGBA)
        pSymbol.AddConfig("Font", "C:\\WINDOWS\\Fonts\\STXIHEI.TTF");//设置字体类型,字体文件一定要存在
        pSymbol.AddConfig("Size", "20"); //字体精度大小
        pSymbol.AddConfig("CharacterSize", "10.0"); //文字大小
        pSymbol.AddConfig("CharacterMode", "1"); //取值 1 -- 始终朝向相机
        pSymbol.AddConfig("AlignmentMode", "5"); //文字对齐方式
        pSymbol.AddConfig("AxisAlignment", "6"); //旋转轴 0 - 7 , 6: 自动
        pSymbol.AddConfig("RemoveDuplicateLabels", "false");//去重复            
        pSymbol.AddConfig("IsEmbolden", "false"); //字体是否加粗
        pSymbol.AddConfig("IsTransform", "true"); //字体是否为斜体
        pSymbol.AddConfig("IsUnderline", "false"); //字体是否有下划线
        pSymbol.AddConfig("IsBack", "false"); //是否设置背景色
        pSymbol.AddConfig("HorizonSpaceSize", "5");//字符水平间隔距离
        pSymbol.AddConfig("FieldPrecision","2");//显示精度
        pSymbol.AddConfig("IsDepthTest","false");//是否开启深度测试。false不开启,结果会浮在场景上,true实际显示位置
        var pStyle = map.CreateStyle("Text");//创建样式
        pStyle.AddSymbol("AnalysisTextSymbol", pSymbol.GetConfig());//将符号对象添加到样式,第一参数为符号类型
        tlo.AddConfig("Style", pStyle.GetConfig());//添加样式
        surfaceDistanceMeasure.UpdateLayerOptions(tlo);//更新图层配置项
    }
} 

//获取地表地表距离测量结果
function GetSurfaceDistanceMeasure() 
{
    if( null != surfaceDistanceMeasure )
    {
        var opt = surfaceDistanceMeasure.GetLayerResult();//获取图层结果
        var points = opt.GetConfigValueByKey("ClickPoints");//获取点击点坐标
        alert("ClickPoints:" + points);//获取的地理坐标点集
        var distanceResult = opt.GetConfigValueByKey("DistanceResult");//获取测量结果
        alert("VerticalResult:" + distanceResult);
    }
}

//移除地表地表距离测量
function RemoveSurfaceDistanceMeasure() 
{
    if( null != surfaceDistanceMeasure )
    {
        map.RemoveLayer(surfaceDistanceMeasure);//删除地表距离测量
    }
}

C++调用

BaseObjectCOMLib::ILayerObjectPtr surfaceDistanceMeasure;//测量图层对象
void CsurfacedistanceDlg::OnBnClickedCreatesurfacedistancemeasure()
{
    //创建图层配置信息
    ConfigOptionsCOMLib::ILayerOptionsPtr tlo = map->CreateLayerOptions("surfaceDistanceMeasure");//创建分析图层配置,给配置起个名称,任意名称
    tlo->AddConfig("LayerOptionsName", "AnalysisLayerOptions");//创建配置类型, AnalysisLayerOptions代表分析图层数据配置,必须是此键值对
    tlo->AddConfig("DataSourceTypeName", "as_surfacedistance");//数据源类型,代表垂直距离测量,必须是此键值对
    tlo->AddConfig("PointColor", "0.0,0.0,1.0,1.0");//设置点击点的颜色透明度(RGBA) 1为不透明 0为透明
    tlo->AddConfig("PointSize", "5"); //设置点击点的大小
    tlo->AddConfig("LineColor","0,1,0,1.0");//线颜色
    tlo->AddConfig("LineWidth", "2"); //线宽(0-10)
    tlo->AddConfig("AltituLineColor","0,1,1,1.0");//贴地线颜色
    tlo->AddConfig("AltituLineWidth", "5"); //贴地线宽度
    tlo->AddConfig("AltituLineStipple", "-1"); //线条类型,-1 实线 1 虚线
    tlo->AddConfig("SamplingInterval","1");//采样间隔
    tlo->AddConfig("MeasureUnit","0");//显示单位。0-米;1-公里;2-海里
    tlo->AddConfig("MeasureUnitLanguage","0");//显示语言。0-英文;1-中文
    tlo->AddConfig("IsDepthTest","true");//是否开启深度测试。false不开启,结果会浮在场景上,true实际显示位置    
    tlo->AddConfig("TextVisible", "true");//文字是否被显示
    tlo->AddConfig("TextLiftUp", "20");//文字显示的抬高高度
    //tlo->AddConfig("IsActive","false");//是否激活
    //tlo->AddConfig("IsLoad","true" );//是否重新加载 Points 配置项所对应的点
    //tlo->AddConfig("Points","120.16119,30.261164,17.042929;120.16151,30.261482,28.522919;");//线段点集
    //tlo->AddConfig("IsWorld","false" );//传入的点位是否为世界坐标,true为世界坐标,false为经纬度坐标

    //创建文字符号
    ConfigOptionsCOMLib::ISymbolObjectPtr pSymbol = map->CreateSymbol("AnalysisTextSymbol");//创建文字符号,分析文字为:AnalysisTextSymbol
    pSymbol->AddConfig("FillingColor", "1.0, 0.0, 0.0, 0.0");//设置文字颜色(RGBA)
    pSymbol->AddConfig("Font", "C:\\WINDOWS\\Fonts\\STXIHEI.TTF");//设置字体类型,字体文件一定要存在
    pSymbol->AddConfig("Size", "20"); //字体精度大小
    pSymbol->AddConfig("CharacterSize", "10.0"); //文字大小
    pSymbol->AddConfig("CharacterMode", "1"); //取值 1 -- 始终朝向相机
    pSymbol->AddConfig("AlignmentMode", "5"); //文字对齐方式
    pSymbol->AddConfig("AxisAlignment", "6"); //旋转轴 0 - 7 , 6: 自动
    pSymbol->AddConfig("RemoveDuplicateLabels", "false");//去重复            
    pSymbol->AddConfig("IsEmbolden", "false"); //字体是否加粗
    pSymbol->AddConfig("IsTransform", "true"); //字体是否为斜体
    pSymbol->AddConfig("IsUnderline", "false"); //字体是否有下划线
    pSymbol->AddConfig("IsBack", "false"); //是否设置背景色
    pSymbol->AddConfig("HorizonSpaceSize", "5");//字符水平间隔距离
    pSymbol->AddConfig("FieldPrecision","2");//显示精度
    pSymbol->AddConfig("IsDepthTest","false");//是否开启深度测试。false不开启,结果会浮在场景上,true实际显示位置
    pSymbol->AddConfig("MeasureUnitType","0");//显示单位。0-米;1-公里;2-海里
    pSymbol->AddConfig("MeasureUnitLanguage","1");//显示语言。0-英文;1-中文
    pSymbol->AddConfig("CoordinateSystemType","0");//显示参考系。 0-地理经纬度;1-投影坐标;2-世界坐标系;3-地心空间直角坐标系XYZ
    //创建文字样式
    ConfigOptionsCOMLib::IStylePtr pStyle = map.CreateStyle("Text");//创建样式
    pStyle->AddSymbol("AnalysisTextSymbol", pSymbol.GetConfig());//将符号对象添加到样式,第一参数为符号类型
    tlo->AddConfig("Style", pStyle.GetConfig());//添加样式
    surfaceDistanceMeasure = map->CreateLayer("AnalysisLayer", tlo);//创建分析图层,第一项参数必须为AnalysisLayer
    map->AddLayer(surfaceDistanceMeasure);//添加分析图层
}

void CsurfacedistanceDlg::OnBnClickedUpdatesurfacedistancemeasure()
{
    if( NULL != surfaceDistanceMeasure )
    {
        //创建图层配置信息
        ConfigOptionsCOMLib::ILayerOptionsPtr tlo = map->CreateLayerOptions("surfaceDistanceMeasure");//创建分析图层配置,给配置起个名称,任意名称

        tlo->AddConfig("LayerOptionsName", "AnalysisLayerOptions");//创建配置类型, AnalysisLayerOptions代表分析图层数据配置,必须是此键值对
        tlo->AddConfig("DataSourceTypeName", "as_surfacedistance");//数据源类型,代表垂直距离测量,必须是此键值对
        tlo->AddConfig("PointColor", "0.0,0.0,1.0,1.0");//设置点击点的颜色透明度(RGBA) 1为不透明 0为透明
        tlo->AddConfig("PointSize", "5"); //设置点击点的大小
        tlo->AddConfig("LineColor","1.0,1.0,0,1.0");//线颜色
        tlo->AddConfig("LineWidth", "10"); //线宽(0-10)
        tlo->AddConfig("AltituLineColor","1,1,1,1.0");//贴地颜色
        tlo->AddConfig("AltituLineWidth", "10"); //贴地线颜色
        tlo->AddConfig("AltituLineStipple", "-1"); //线条类型,-1 实线 1 虚线
        tlo->AddConfig("SamplingInterval","1" );//采样间隔
        tlo->AddConfig("TextVisible", "true");//文字是否被显示
        tlo->AddConfig("TextLiftUp", "40");//文字显示的抬高高度

        //下列三个配置可选
        //tlo->AddConfig("IsLoad","true" );//是否加载点坐标
        //tlo->AddConfig("IsWorld","false" );//传入的点位是否为世界坐标,true为世界坐标,false为经纬度坐标
        //tlo->AddConfig("Points","120.16119,30.261164,17.042929;120.16151,30.261482,28.522919;");//点坐标
        //tlo->AddConfig("IsActive","false" );//是否激活测量

        //创建文字符号
        ConfigOptionsCOMLib::ISymbolObjectPtr pSymbol = map->CreateSymbol("AnalysisTextSymbol");//创建文字符号,分析文字为:AnalysisTextSymbol
        pSymbol->AddConfig("FillingColor", "1.0, 0.0, 0.0, 0.0");//设置文字颜色(RGBA)
        pSymbol->AddConfig("Font", "C:\\WINDOWS\\Fonts\\STXIHEI.TTF");//设置字体类型,字体文件一定要存在
        pSymbol->AddConfig("Size", "20"); //字体精度大小
        pSymbol->AddConfig("CharacterSize", "10.0"); //文字大小
        pSymbol->AddConfig("CharacterMode", "1"); //取值 1 -- 始终朝向相机
        pSymbol->AddConfig("AlignmentMode", "5"); //文字对齐方式
        pSymbol->AddConfig("AxisAlignment", "6"); //旋转轴 0 - 7 , 6: 自动
        pSymbol->AddConfig("RemoveDuplicateLabels", "false");//去重复            
        pSymbol->AddConfig("IsEmbolden", "false"); //字体是否加粗
        pSymbol->AddConfig("IsTransform", "true"); //字体是否为斜体
        pSymbol->AddConfig("IsUnderline", "false"); //字体是否有下划线
        pSymbol->AddConfig("IsBack", "false"); //是否设置背景色
        pSymbol->AddConfig("HorizonSpaceSize", "5");//字符水平间隔距离
        pSymbol->AddConfig("FieldPrecision","2");//显示精度
        pSymbol->AddConfig("IsDepthTest","false");//是否开启深度测试。false不开启,结果会浮在场景上,true实际显示位置
        //创建样式
        ConfigOptionsCOMLib::IStylePtr pStyle = map->CreateStyle("Text");//创建样式
        pStyle->AddSymbol("AnalysisTextSymbol", pSymbol->GetConfig());//将符号对象添加到样式,第一参数为符号类型
        tlo->AddConfig("Style", pStyle->GetConfig());//添加样式
        surfaceDistanceMeasure->UpdateLayerOptions(tlo);//更新图层配置项
    }
}

void CsurfacedistanceDlg::OnBnClickedGetsurfacedistancemeasure()
{
    if( NULL != surfaceDistanceMeasure )
    {
        ConfigOptionsCOMLib::ILayerOptionsPtr opt = surfaceDistanceMeasure->GetLayerResult();//获取图层结果
        CString points = opt->GetConfigValueByKey("ClickPoints");//获取点击点坐标
        MessageBox(L"ClickPoints:" + points);//获取的地理坐标点集
        CString distanceResult = opt->GetConfigValueByKey("DistanceResult");//获取测量结果
        MessageBox(L"VerticalResult:" + distanceResult);
    }
}

void CsurfacedistanceDlg::OnBnClickedRemovesurfacedistancemeasure()
{
    if( NULL != surfaceDistanceMeasure )
    {
        map->RemoveLayer(surfaceDistanceMeasure);//删除地表距离测量
        surfaceDistanceMeasure = NULL;
    }
}

C#调用

//创建地表距离测量
ILayerObject surfaceDistanceMeasure = null;
private void CreateSurfaceDistanceMeasure_Click(object sender, EventArgs e)
{
    //创建图层配置信息
    ILayerOptions tlo = map.CreateLayerOptions("surfaceDistanceMeasure");//创建分析图层配置,给配置起个名称,任意名称
    tlo.AddConfig("LayerOptionsName", "AnalysisLayerOptions");//创建配置类型, AnalysisLayerOptions代表分析图层数据配置,必须是此键值对
    tlo.AddConfig("DataSourceTypeName", "as_surfacedistance");//数据源类型,代表垂直距离测量,必须是此键值对
    tlo.AddConfig("PointColor", "0.0,0.0,1.0,1.0");//设置点击点的颜色透明度(RGBA) 1为不透明 0为透明
    tlo.AddConfig("PointSize", "5"); //设置点击点的大小
    tlo.AddConfig("LineColor", "0,1,0,1.0");//线颜色
    tlo.AddConfig("LineWidth", "2"); //线宽(0-10)
    tlo.AddConfig("AltituLineColor", "0,1,1,1.0");//贴地线颜色
    tlo.AddConfig("AltituLineWidth", "5"); //贴地线宽度
    tlo.AddConfig("AltituLineStipple", "-1"); //线条类型,-1 实线 1 虚线
    tlo.AddConfig("SamplingInterval", "1");//采样间隔
    tlo.AddConfig("MeasureUnit", "0");//显示单位。0-米;1-公里;2-海里
    tlo.AddConfig("MeasureUnitLanguage", "0");//显示语言。0-英文;1-中文
    tlo.AddConfig("IsDepthTest", "true");//是否开启深度测试。false不开启,结果会浮在场景上,true实际显示位置    
    tlo.AddConfig("TextVisible", "true");//文字是否被显示
    tlo.AddConfig("TextLiftUp", "20");//文字显示的抬高高度
    //tlo.AddConfig("IsActive","false");//是否激活
    //tlo.AddConfig("IsLoad","true" );//是否重新加载 Points 配置项所对应的点
    //tlo.AddConfig("Points","120.16119,30.261164,17.042929;120.16151,30.261482,28.522919;");//线段点集
    //tlo.AddConfig("IsWorld","false" );//传入的点位是否为世界坐标,true为世界坐标,false为经纬度坐标

    //创建文字符号
    var pSymbol = map.CreateSymbol("AnalysisTextSymbol");//创建文字符号,分析文字为:AnalysisTextSymbol
    pSymbol.AddConfig("FillingColor", "1.0, 0.0, 0.0, 0.0");//设置文字颜色(RGBA)
    pSymbol.AddConfig("Font", "C:\\WINDOWS\\Fonts\\STXIHEI.TTF");//设置字体类型,字体文件一定要存在
    pSymbol.AddConfig("Size", "20"); //字体精度大小
    pSymbol.AddConfig("CharacterSize", "10.0"); //文字大小
    pSymbol.AddConfig("CharacterMode", "1"); //取值 1 -- 始终朝向相机
    pSymbol.AddConfig("AlignmentMode", "5"); //文字对齐方式
    pSymbol.AddConfig("AxisAlignment", "6"); //旋转轴 0 - 7 , 6: 自动
    pSymbol.AddConfig("RemoveDuplicateLabels", "false");//去重复            
    pSymbol.AddConfig("IsEmbolden", "false"); //字体是否加粗
    pSymbol.AddConfig("IsTransform", "true"); //字体是否为斜体
    pSymbol.AddConfig("IsUnderline", "false"); //字体是否有下划线
    pSymbol.AddConfig("IsBack", "false"); //是否设置背景色
    pSymbol.AddConfig("HorizonSpaceSize", "5");//字符水平间隔距离
    pSymbol.AddConfig("FieldPrecision", "2");//显示精度
    pSymbol.AddConfig("IsDepthTest", "false");//是否开启深度测试。false不开启,结果会浮在场景上,true实际显示位置
    pSymbol.AddConfig("MeasureUnitType", "0");//显示单位。0-米;1-公里;2-海里
    pSymbol.AddConfig("MeasureUnitLanguage", "1");//显示语言。0-英文;1-中文
    pSymbol.AddConfig("CoordinateSystemType", "0");//显示参考系。 0-地理经纬度;1-投影坐标;2-世界坐标系;3-地心空间直角坐标系XYZ

    //创建文字样式
    var pStyle = map.CreateStyle("Text");//创建样式
    pStyle.AddSymbol("AnalysisTextSymbol", pSymbol.GetConfig());//将符号对象添加到样式,第一参数为符号类型
    tlo.AddConfig("Style", pStyle.GetConfig());//添加样式
    surfaceDistanceMeasure = map.CreateLayer("AnalysisLayer", tlo);//创建分析图层,第一项参数必须为AnalysisLayer
    map.AddLayer(surfaceDistanceMeasure);//添加分析图层
}
//更新地表地表距离测量
private void UpdateSurfaceDistanceMeasure_Click(object sender, EventArgs e)
{
    if (null != surfaceDistanceMeasure)
    {
        //创建图层配置信息
        ILayerOptions tlo = map.CreateLayerOptions("surfaceDistanceMeasure");//创建分析图层配置,给配置起个名称,任意名称

        tlo.AddConfig("LayerOptionsName", "AnalysisLayerOptions");//创建配置类型, AnalysisLayerOptions代表分析图层数据配置,必须是此键值对
        tlo.AddConfig("DataSourceTypeName", "as_surfacedistance");//数据源类型,代表垂直距离测量,必须是此键值对
        tlo.AddConfig("PointColor", "0.0,0.0,1.0,1.0");//设置点击点的颜色透明度(RGBA) 1为不透明 0为透明
        tlo.AddConfig("PointSize", "5"); //设置点击点的大小
        tlo.AddConfig("LineColor", "1.0,1.0,0,1.0");//线颜色
        tlo.AddConfig("LineWidth", "10"); //线宽(0-10)
        tlo.AddConfig("AltituLineColor", "1,1,1,1.0");//贴地颜色
        tlo.AddConfig("AltituLineWidth", "10"); //贴地线颜色
        tlo.AddConfig("AltituLineStipple", "-1"); //线条类型,-1 实线 1 虚线
        tlo.AddConfig("SamplingInterval", "1");//采样间隔
        tlo.AddConfig("TextVisible", "true");//文字是否被显示
        tlo.AddConfig("TextLiftUp", "40");//文字显示的抬高高度

        //下列三个配置可选
        //tlo.AddConfig("IsLoad","true" );//是否加载点坐标
        //tlo.AddConfig("IsWorld","false" );//传入的点位是否为世界坐标,true为世界坐标,false为经纬度坐标
        //tlo.AddConfig("Points","120.16119,30.261164,17.042929;120.16151,30.261482,28.522919;");//点坐标
        //tlo.AddConfig("IsActive","false" );//是否激活测量

        //创建文字符号
        var pSymbol = map.CreateSymbol("AnalysisTextSymbol");//创建文字符号,分析文字为:AnalysisTextSymbol
        pSymbol.AddConfig("FillingColor", "1.0, 0.0, 0.0, 0.0");//设置文字颜色(RGBA)
        pSymbol.AddConfig("Font", "C:\\WINDOWS\\Fonts\\STXIHEI.TTF");//设置字体类型,字体文件一定要存在
        pSymbol.AddConfig("Size", "20"); //字体精度大小
        pSymbol.AddConfig("CharacterSize", "10.0"); //文字大小
        pSymbol.AddConfig("CharacterMode", "1"); //取值 1 -- 始终朝向相机
        pSymbol.AddConfig("AlignmentMode", "5"); //文字对齐方式
        pSymbol.AddConfig("AxisAlignment", "6"); //旋转轴 0 - 7 , 6: 自动
        pSymbol.AddConfig("RemoveDuplicateLabels", "false");//去重复            
        pSymbol.AddConfig("IsEmbolden", "false"); //字体是否加粗
        pSymbol.AddConfig("IsTransform", "true"); //字体是否为斜体
        pSymbol.AddConfig("IsUnderline", "false"); //字体是否有下划线
        pSymbol.AddConfig("IsBack", "false"); //是否设置背景色
        pSymbol.AddConfig("HorizonSpaceSize", "5");//字符水平间隔距离
        pSymbol.AddConfig("FieldPrecision", "2");//显示精度
        pSymbol.AddConfig("IsDepthTest", "false");//是否开启深度测试。false不开启,结果会浮在场景上,true实际显示位置
        //创建样式
        var pStyle = map.CreateStyle("Text");//创建样式
        pStyle.AddSymbol("AnalysisTextSymbol", pSymbol.GetConfig());//将符号对象添加到样式,第一参数为符号类型
        tlo.AddConfig("Style", pStyle.GetConfig());//添加样式
        surfaceDistanceMeasure.UpdateLayerOptions(tlo);//更新图层配置项
    }
}
//获取地表地表距离测量结果
private void GetSurfaceDistanceMeasure_Click(object sender, EventArgs e)
{
    if (null != surfaceDistanceMeasure)
    {
        var opt = surfaceDistanceMeasure.GetLayerResult();//获取图层结果
        var points = opt.GetConfigValueByKey("ClickPoints");//获取点击点坐标
        MessageBox.Show("ClickPoints:" + points);//获取的地理坐标点集
        var distanceResult = opt.GetConfigValueByKey("DistanceResult");//获取测量结果
        MessageBox.Show("VerticalResult:" + distanceResult);
    }
}
//移除地表地表距离测量
private void RemoveSurfaceDistanceMeasure_Click(object sender, EventArgs e)
{
    if (null != surfaceDistanceMeasure)
    {
        map.RemoveLayer(surfaceDistanceMeasure);//删除地表距离测量
    }
}

results matching ""

    No results matching ""