浏览问题
等待回复
精选文章
申请试用
资源中心
漏洞修复
注册
|
登录
SuperMap技术问答社区
我要
提问
智能客服
首页
/
浏览问题
/
组件GIS
/
问题详情
三维场景,加载kml文件后如何进行编辑操作?
lierisme
45EXP
2020年02月12日
Layer3DKML layerPipeLine = this.m_sceneControl.Scene.Layers.Add(@"i:\1.kml", Layer3DType.KML,true) as Layer3DKML;
layerPipeLine.IsEditable = true;
layerPipeLine.IsSelectable = true;
kml文件中的内容能够加载到场景中
IsEditable设置后,kml图层的线段无任何变化,鼠标点击后也无法编辑,官方有demo吗?
三维
编辑
kml
请
登录
或者
注册
后回答这个问题。
1个回答
您好,直接获取kml里的元素,然后修改里面的节点即可
邬袁凯
2,432EXP
2020年02月12日
不能直接在界面里操作吗?
“直接获取kml里的元素”是指什么?layerPipeLine.Features.GetFeatureArray(Feature3DSearchOption.AllFeatures)[0]
这个吗?
是不是不能象二维场景一般在界面里直接拖动节点进行线面的编辑?
三维里面数据集里的线开启可编辑可以像二维里的操作,kml,trackinglayer等需要获取线,然后改变节点,
kml里面获取几何要素是先获取kml的线的feature,然后获取feature里的geometry
"三维里面数据集里的线开启可编辑"—是指Layer3DKML里的feature中的geometry吗?没有找到类似IsEditable的设置用于开启线编辑?还是说“三维里面数据集”根本就不是Layer3DKML类,而是其他的什么类?
能否明确说下是哪个类的哪个方法吗?
不是指kml,是特指三维线数据集,数据源里的数据集,添加到场景里的,Layer3DDataset类
不知如何将Geometry3D数据导入到Layer3DDataset中,所以后来改用了Layer3DKML
新建一个dataset,类型为三维线数据集的,然后获取dataset里的recotdset,往recordset里面去新增geometry就行了,参考范例 安装目录\SampleCode\Data\RecordsetManage\RecordsetManage.csproj
Geometry3D geometry = e.Geometry;
Layer3DSettingVector setting = new Layer3DSettingVector();
setting.Style.AltitudeMode = AltitudeMode.ClampToGround;
setting.Style.LineColor = Color.Yellow;
setting.Style.LineWidth = 1.3;
Datasource ds = MapUtils.OpenDatasource(this.m_sceneControl.Scene.Workspace, "drawEdit");
DatasetVectorInfo datasetVectorInfo = new DatasetVectorInfo();
datasetVectorInfo.Type = DatasetType.Line3D;
datasetVectorInfo.IsFileCache = true;
datasetVectorInfo.Name = "line";
DatasetVector datasetVector = ds.Datasets.Create(datasetVectorInfo);
Recordset recordset = datasetVector.GetRecordset(true, CursorType.Dynamic);
bool f = recordset.AddNew(geometry);
recordset.Update();
datasetVector.PrjCoordSys = PrjCoordSys.FromEPSG(3857);
Layer3DDataset layerPipeLine = this.m_sceneControl.Scene.Layers.Add(datasetVector, setting, true, "pipeLine");
layerPipeLine.IsVisible = true;
layerPipeLine.IsEditable = true;
layerPipeLine.IsSelectable = true;
this.m_sceneControl.Scene.Refresh();
this.m_sceneControl.Refresh();
请看看是哪里有问题,界面不显示线段,这段代码是放在 m_sceneControl.Tracked 事件里的
请
登录
或者
注册
后再添加评论。
智能推荐
相关问题
相关文章
推荐教程
三维场景,绘制了线段或多边形后,如何再去选中并编辑?
请问触发了三维场景对象的节点编辑后,如何编辑节点呢
三维场景下,矢量数据图层在界面上编辑时,如何删除?
二维场景下如何加载kml文件
二维场景下如何加载kml文件
webgl上已绘制的线面是否支持通过鼠标拖动节点等在线进行矢量编辑?
请问三维场景的线要素可以编辑节点吗?
场景中的三维自定义专题图可以实现编辑功能吗?
热门文章
查看更多>
关注我们
超图软件官网
SuperMap Online
地图慧
帮助中心
备案信息
技术资源中心
...