首页 / 浏览问题 / 三维GIS / 问题详情
您好,我想了解进行webGL前端开发时如何在场景里绘制二维矢量点线面
25EXP 2019年11月25日
webGL开发,已经加载了二维地图服务和三维服务,想在三维场景中绘制二维矢量点线面,请问如何实现?

1个回答

您绘制的二维矢量数据,需要保存吗?

您可以获取点击位置的position,然后只提取其中的XY值,通过XY绘制entity的方式来绘制点线面
6,215EXP 2019年11月26日
是需要保存的,entity能够存储吗?

entity不可以储存的。

如果您需要存储的话,您需要调用iserver的接口,您看一下这个示例

http://iclient.supermap.io/examples/classic/editor.html#query_editFeature

示例中绘制的二维数据都会储存之相应的数据源指定的数据集中

那请问这样绘制的时候,能在前端那个球上显示出来吗?因为是webGL开发,是在cesium那个球上绘制,我就一直有一个疑问,这个classic建立的vectorlayer能呈现在这个球上吗?
他存储到了数据中,您加载的时候需要写个代码查询到对应的数据,然后再绘制出来。
嗯,我想知道就是它在绘制的过程中能不能显示出来,因为基本上调用的就是SuperMap.Control.DrawFeature(vectorLayer, SuperMap.Handler.Point);这样的函数,我不知道绘制的过程中呈现的效果是在球面上绘制吗?这个classic的图层能结合到cesium的球上吗?不好意思对这部分实在是不太熟悉。
没关系,我说的也不是很清楚

就是您在前端绘制的时候,先使用entity绘制,绘制的同时,通过classic的接口或者向iserver发post请求,对数据进行“增删改查”等操作。然后下一次加载三维场景的时候,去查询这些数据,把查到的结果再通过entity绘制出来
哦哦,明白了,非常感谢您耐心的回答!
不好意思,再请教一下,我获取点击位置的坐标后,是有x,y,z三个坐标值,只取x,y作为entity中的position的话没报错但是地图上也没显示这个点,请问这个position参数应该如何设置呢?还是说把z设成一个固定的值?我刚定位了一下我的点,我好像直接就飞到地心里去了
viewer.entities.add({
                            id: 'point',
                            position:Cesium.Cartesian3.fromDegrees(
                                    115.00769546779887, 39.00948953601627
                                ),
                            point:{
                                pixelSize:20
                            }
                        });

您好,您试一下这个代码,我测了一下 没有问题
...