在kml图层中如何添加点线面对象

0 投票
220 浏览

我想在kml图层中添加点线面对象,但是却一直添加不上去,我的做法是将点线面对象转化为三维地标几何对象,也转化成功了,但是在添加到三维要素类(Feature3Ds)是却添加不进去,这是什么原因呢

 Layer3D layer3dkml = m_sceneControl.Scene.Layers.Add(shpPath, Layer3DType.KML, true) as Layer3DKML;
                    layer3dkml.IsEditable = true;
                    foreach (GeoPlacemark geo in geolist)
                    {
                        layer3dkml.Features.Add(geo);
                        layer3dkml.UpdateData();
                    }
                    layer3dkml.IsVisible = true;
                    m_sceneControl.Scene.Refresh();

最新提问 3月 7 分类:  220次浏览 | 用户: argentum (0 分)

1个回答

0 投票

您好,你说的添加不上去是指KML上面没有对象还是指添加上去了没有保存下来,可以通过layer3dkml.Featrues.count来确定对象是否成功添加上去了,添加对象代码可以参考https://pan.baidu.com/share/init?surl=kVPfgbl  提取码:8ic1

最新回答 3月 7 用户: 胡林 名扬四海 (5,707 分)
在layer3dkml.Features.Add(geo)之后,调试发现features的count为0
                workspace = new Workspace();
                scenecontrol = new SceneControl();
                scenecontrol.Dock = DockStyle.Fill;
                panel2.Controls.Add(scenecontrol);
                scenecontrol.Scene.Workspace = workspace;
                Layer3DKML 
                kml=scenecontrol.Scene.Layers.Add(@"C:\Users\Administrator\Desktop\kmldemo.kml", Layer3DType.KML, true) as Layer3DKML;
                GeoPoint3D point = new GeoPoint3D(116, 30,0);
                kml.Features.Add(point);
                kml.UpdateData();
                int count1 = kml.Features.Count;
                GeoPoint3D po = new GeoPoint3D(20,20,20);
                Feature3D fe = new Feature3D();
                fe.Geometry =po;
                kml.Features.Add(fe);
                kml.UpdateData();
                int count = kml.Features.Count;

我这儿用了两种添加三维点的方法都没问题,你试一下,不行的话用桌面重新创建一个KML试试呢

你这儿好像是并没有将三维点坐标转化成三维地标几何对象这一步,我去试试不转化看看
这个Features.Add是只能添加GeoPoint3D的吗,不能添加GeoPoint吗
无法添加二维对象
那意思是只能讲GeoPoint转化成GeoPoint3D才能添加到KML图层?
...