openlayers 仿CAD(2)

本文探讨了如何将图形数据序列化为JSON格式,尤其是关于样式和自定义属性的保存问题。此外,作者分享了ol.interaction.Translate与Snap配合的精确度问题,以及使用修改交互进行图形定位的方法。还提到了图形样式更新延迟的解决方案,以及如何动态添加并刷新ol.interaction.SnapGuides和Snap。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

1、图形集合可以序列化为JSON格式 ,但是其中的样式数据及自行添加的属性不会被转出,只能转出坐标数据

var string = new ol.format.GeoJSON().writeFeatures(newfeatures, {

});

2、 ol.interaction.Translate 与snap不能精确配合,总是差那一点,将 ol.interaction.Translate换为ol.interaction.Modify后可以精确定位

3、 用线切割面成两个图形的方法,没有找到。这里采用了将线转换为很小的面,进行切割,根据结果坐标再将结果分成两个或多个图形

4、改变图层样式,地图中的图形样式没有立刻变化,map.render()仍然不可以,需要用点击触发一下地图的事件必须有变化才可以,最后用以下方案解决

                let layers = that.map.getLayers();

                layers.forEach(layeritem =>

                {

                    let feats = layeritem.getSource().getFeatures();

                    feats.forEach(featitem =>

                    {

                        featitem.changed();

                    });

                });

5、ol.interaction.SnapGuides、ol.interaction.Snap,只对在其之前添加的interaction有效,所以如果要动态添加interaction,要用到以上两种时,应该删除再添加,进行刷新,否则不起作用

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值