OpenLayers 10中Polygon(多边形)构建方法求助
OpenLayers 10中Polygon(多边形)构建方法求助
嘿,我看你在OpenLayers 10里构建Polygon的时候卡壳了,别着急,咱们来梳理下问题所在,我之前也踩过类似的坑~
首先看你给出的代码片段,有几个明显的问题需要修正:
- 坐标类型不对:你用的是字符串格式的坐标(比如
'-10'),OpenLayers的几何图形只认数值类型的坐标(直接写数字-10就行) - 多边形坐标结构不符合要求:Polygon的坐标需要是「嵌套的二维数组」,而且多边形必须闭合(最后一个点要和第一个点完全重合)
- 你的循环代码没写完,不过其实根本不需要手动转points,直接处理坐标数组就够了
给你一个可以直接运行的修正版代码:
import { Feature } from "ol"; import { Polygon } from "ol/geom"; // 修正:坐标用数字类型,并且闭合多边形(最后回到起始点) const coords = [ [-10, 10], [-10, 5], [-20, 5], [-20, 10], [-10, 10] // 必须添加这个点,让多边形闭合 ]; // 构建Polygon:注意外层要多套一层数组(支持多环多边形,比如带洞的情况) const polygonGeom = new Polygon([coords]); // 创建对应的Feature const polygonFeature = new Feature(polygonGeom); // 如果要在地图上显示,还需要把Feature添加到矢量图层(示例代码) // import { Vector as VectorLayer } from 'ol/layer'; // import { Vector as VectorSource } from 'ol/source'; // const vectorSource = new VectorSource({ features: [polygonFeature] }); // const vectorLayer = new VectorLayer({ source: vectorSource }); // map.addLayer(vectorLayer);
再给你划几个重点:
- 坐标格式是硬要求,字符串坐标会导致OpenLayers无法正确解析几何图形,这是最容易犯的错误
- 多边形必须闭合,不然渲染出来可能是不完整的线条,甚至完全不显示
- Polygon构造函数的参数是二维数组,因为它支持多环结构(比如一个大 polygon 里面挖个小 polygon 当洞),所以哪怕是最简单的单环多边形,也要在外层套一层数组
这样调整之后,你应该就能成功构建Polygon啦~
备注:内容来源于stack exchange,提问作者Scott Arnold
相关产品推荐
相关产品推荐

