业务场景
draw绘制完成后将结果输出到数据源
报错
chunk-NPABQ273.js?v=aa7ce40f:656 Uncaught AssertionError: Assertion failed. See https://openlayers.org/en/v6.14.1/doc/errors/#30 for details. at new AssertionError2 (chunk-NPABQ273.js?v=aa7ce40f:656:20) at assert (chunk-NPABQ273.js?v=aa7ce40f:669:11) at VectorSource2.addToIndex_ (chunk-F7FAAFK6.js?v=aa7ce40f:1041:7) at VectorSource2.addFeatureInternal (chunk-F7FAAFK6.js?v=aa7ce40f:1006:15) at VectorSource2.addFeature (chunk-F7FAAFK6.js?v=aa7ce40f:1001:10) at Draw2.finishDrawing (chunk-T2CNLOSY.js?v=aa7ce40f:6107:20) at Draw2.handleUpEvent (chunk-T2CNLOSY.js?v=aa7ce40f:5847:20) at PointerInteraction2.handleEvent (chunk-T2CNLOSY.js?v=aa7ce40f:4248:30) at Draw2.handleEvent (chunk-T2CNLOSY.js?v=aa7ce40f:5807:41) at PluggableMap2.handleMapBrowserEvent (chunk-ZGFYY2V7.js?v=aa7ce40f:1104:32)
原因
OpenLayers 进行了一些内部验证,并且这些验证失败了
解决
将结果取出为单纯的数据结构并new一个新的Feature对象
this.draw.on("drawend", (evt) => {
let newFeatures = new Feature({
geometry: evt.feature.getGeometry(),
});
this.sourceObject["interactionLayer"].clear();
this.sourceObject["interactionLayer"].addFeature(newFeatures);
});