1.5.1 图层对象操作


图层是指一个总体当中的一类或者一部分。例如对于一个小区,可以将小区中的建筑归为一个图层,将树木、道路等各自作为一个图层,然后将所有的图层加在一起就形成了一个小区。当然也可以将一栋楼、一个单元楼作为一个图层。

对于CooRun SDK来说,场景内的所有展示对象都可以归类为图层对象。包括:数据加载、空间分析、测量、绘制、动态路径等。

图层对象提供了创建、添加、更新、定位、删除五种操作。

图层添加

一般来说,在添加图层之前必须先创建图层,因此图层创建和添加是同时使用的。图层添加分为4步操作:

1. 创建图层配置对象。 调用场景map对象的 CreateLayerOptions()接口进行图层配置对象创建。

2. 添加配置参数。 调用第一步创建的图层配置对象的AddConfig()接口,添加配置信息。

3. 创建图层对象。 调用场景map对象的CreateLayer()接口进行图层创建。

4. 添加图层对象。 调用场景map对象的AddLayer()接口将图层添加到场景中。

对于图层添加的四步操作来说,主要是第2和第3步操作会有所不同。针对第二步进行参数配置,后续的功能说明会一一讲解。

对于第3步的CreateLayer()接口原型为:CreateLayer(BSTR layerType, IUnknown* opt)。其中第一个参数代表创建的图层类型,它的取值有以下几种:

编号 功能名称 数据源类型 备注
1 ModelLayer 模型图层 包括人工模型、倾斜摄影
2 ImageLayer 影像图层 -
3 ElevationLayer 地形高程图层 -
4 FeatureModelLayer 矢量图层 -
5 AnalysisLayer 分析测量图层 -
6 DynamicPathLayer 动态路径图层 -
7 ViewPointLayer 视点图层 -

在添加配置信息时,有一个参数配置是和图层类型配对的,配置名称为:LayerOptionsName,在创建图层时必须一一对应,否则图层无法正常创建。相应的取值有以下几种:

编号 功能名称 数据源类型 备注
1 ModelLayerOptions 模型图层配置对象 对应图层类型:ModelLayer
2 ImageLayerOptions 影像图层配置对象 对应图层类型:ImageLayer
3 ElevationLayerOptions 地形图层配置对象 对应图层类型:ElevationLayer
4 FeatureModelLayerOptions 矢量图层配置对象 对应图层类型:FeatureModelLayer
5 AnalysisLayerOptions 分析测量图层配置对象 对应图层类型:AnalysisLayer
6 DynamicPathLayerOptions 动态路径图层配置对象 对应图层类型:DynamicPathLayer
7 ViewPointLayerOptions 视点图层配置对象 对应图层类型:ViewPointLayer
8 AnimationLayerOptions 模型动画图层 对应图层类型:AnimationLayer

代码调用示例

Javascript调用

var tlo = map.CreateLayerOptions("modelOpt");//1.创建图层配置,名称任意
//2.设置配置参数
tlo.AddConfig("LayerOptionsName", "ModelLayerOptions");//创建配置类型
tlo.AddConfig("DataSourceTypeName", "c3ss");//服务数据源
tlo.AddConfig("Compress", compress);//是否压缩
tlo.AddConfig("Url", url);//数据路径
var modelLayer = map.CreateLayer("ModelLayer", tlo); //3.创建图层对象
map.AddLayer(modelLayer);//4.添加图层

C++调用

ConfigOptionsCOMLib::ILayerOptionsPtr tlo = (ConfigOptionsCOMLib::ILayerOptionsPtr)map->CreateLayerOptions("modelOpt"); //1.创建图层配置对象,任意名称
//2.设置配置参数
tlo->AddConfig("LayerOptionsName", "ModelLayerOptions");//图层配置对象名称, ModelLayerOptions代表模型图层配置对象
tlo->AddConfig("DataSourceTypeName", "c3ss");//数据源类型,c3ss代表服务数据源
tlo->AddConfig("Url", url.c_str()); //数据路径
tlo->AddConfig("PriorityOffset","1.0");//结点调度优先级的偏移值
tlo->AddConfig("Compress", compress.c_str()); //是否压缩(根据数据实际情况设置)
BaseObjectCOMLib::ILayerObjectPtr modelLayer = (BaseObjectCOMLib::ILayerObjectPtr)map->CreateLayer("ModelLayer", tlo); //3.创建模型图层,第一项参数必须为ModelLayer
map->AddLayer(modelLayer); //4.添加模型图层

C#调用

ILayerOptions tlo = map.CreateLayerOptions("modelOpt");//1.创建图层配置对象,任意名称
//2.设置配置参数
tlo.AddConfig("LayerOptionsName", "ModelLayerOptions");//图层配置对象名称, ModelLayerOptions代表模型图层配置对象
tlo.AddConfig("DataSourceTypeName", "c3s");//数据源类型,c3s代表本地数据源
tlo.AddConfig("Compress", compress);//是否压缩(根据数据实际情况设置)
tlo.AddConfig("PriorityOffset","1.0");//结点调度优先级的偏移值
tlo.AddConfig("VisualMaxRange", "5000");//最大显示距离。如不设或者设为0,将使用数据默认值
tlo.AddConfig("IsHasTexture", "true");//是否有纹理,默认为true,该参数在进行分析时起效
tlo.AddConfig("Url", url);//数据路径
ILayerObject modelLayer = map.CreateLayer("ModelLayer", tlo);//3.创建模型图层,第一项参数为ModelLayer
map.AddLayer(modelLayer);//4.添加图层

图层更新

图层更新是对已经添加到场景中的图层进行部分参数更新,以达到改变之前效果的操作。一般只有分析测量图层和动态路径图层才支持更新。

更新图层一般分为3步操作:

1. 创建图层配置对象。 调用场景map对象的 CreateLayerOptions()接口进行图层配置对象创建。

2. 添加配置参数。 调用第一步创建的图层配置对象的AddConfig()接口,添加配置信息,具体的配置信息会在下面进行说明。

3. 更新图层对象。 调用图层对象的UpdateLayerOptions()接口进行图层更新。

代码调用示例

Javascript调用

var tlo = map.CreateLayerOptions("AnalyOpt");//1.创建图层配置
//2.设置配置参数
tlo.AddConfig("LayerOptionsName", "AnalysisLayerOptions");//创建配置类型
tlo.AddConfig("DataSourceTypeName", "as_distance");//服务数据源
tlo.AddConfig("DistanceMeasureLineColor", "0.0,1.0,0.0,1.0"); //线颜色
tlo.AddConfig("LineWidth", "5");//线宽(0-10)
disMeasure.UpdateLayerOptions(tlo);//3.更新图层对象

C++调用

ConfigOptionsCOMLib::ILayerOptionsPtr tlo = (ConfigOptionsCOMLib::ILayerOptionsPtr)map->CreateLayerOptions(""); //1.创建图层配置对象,任意名称
//2.设置配置参数
tlo->AddConfig("LayerOptionsName", "AnalysisLayerOptions");//图层配置对象名称, AnalysisLayerOptions代表分析图层数据配置
tlo->AddConfig("DistanceMeasureLineColor", "0.0,1.0,0.0,1.0"); //线颜色
tlo->AddConfig("LineWidth", "5");//线宽(0-10)
//将样式添加到图层配置里
tlo->AddConfig("Style", pStyle->GetConfig());//添加样式
disMeasure->UpdateLayerOptions(tlo);//3.更新图层

C#调用

ILayerOptions tlo = map.CreateLayerOptions("distanceMeasure");//1.创建图层配置对象,任意名称
//2.设置配置参数
tlo.AddConfig("LayerOptionsName", "AnalysisLayerOptions");//图层配置对象名称, AnalysisLayerOptions代表分析图层数据配置
tlo.AddConfig("DistanceMeasureLineColor", "0.0,1.0,0.0,1.0"); //线颜色
tlo.AddConfig("LineWidth", "5");//线宽(0-10)
disMeasure.UpdateLayerOptions(tlo);//3.更新参数设置项

图层定位

图层定位是模型、矢量和地形影像包含的功能,它是将相机飞行到指定位置,以达到可以观察到图层数据的目的。

图层定位需要调用图层对象的Locate()接口。

代码调用示例

Javascript调用

modelLayer.Locate();//图层定位

C++调用

modelLayer->Locate();//图层定位

C#调用

modelLayer.Locate();//图层定位

图层删除

图层添加到场景中之后,如果需要移除,可以调用RemoveLayer()接口。

代码调用示例

Javascript调用

map.RemoveLayer(modelLayer);//删除图层

C++调用

map->RemoveLayer(modelLayer);//删除图层

C#调用

map.RemoveLayer(modelLayer);//删除图层

results matching ""

    No results matching ""