VUE中cesium 添加polygon 报错

vue3.0  添加entity polygon  hierarchy属性使用回调函数CallbackProperty报错

 

var PolygonPrimitive = (function () {
    function _(hierarchy) {
        this.options = {
            polygon: {
                show: true,
                hierarchy: [],
                material: Cesium.Color.CORNFLOWERBLUE
            }
        };
        this.hierarchy = hierarchy;
        this._init();
    }
    _.prototype._init = function () {
        var _self = this;
        var _update = function () {
            return _self.hierarchy;
        };
        //实时更新polygon.hierarchy
        this.options.polygon.hierarchy = new Cesium.CallbackProperty(_update, false);
        const viewer = window.earth
        viewer.entities.add(this.options);
    };
    return _;
})();
export { PolygonPrimitive }

调试到源码 是在cesium  添加Polygon的时候出错了 PolygonGeometry.js中 var outerPositions = polygonHierarchy.positions;这个出错了。排查了下原因是因为polygon = new PolygonPrimitive(points) 这样传入的类型有问题,不是一个PolygonHierarchy类型,没有positions属性,而是一个三维坐标的数组,所以在传入的时候需要进行格式强制转换 polygon = new PolygonPrimitive(new Cesium.PolygonHierarchy(points)),但是polyline的话是可以直接传入坐标

之后还发现个奇怪的事,在vue中需要强制转换,在原生js中直接传入是可以的polygon = new PolygonPrimitive(points) 没有深究了

### 实现绘制图形编号的方法 在 Vue-Cesium 项目中,为了给绘制的图形添加编号,可以通过创建带有标签的实体来实现这一需求。具体来说,在定义每一个几何体的同时,还可以通过 `label` 属性为该对象附加一个文本标签用于显示其对应的序号。 下面是一个简单的例子展示如何在一个多边形上设置编号: ```javascript const index = 1; // 假设这是第一个被添加的实体 // 创建一个多边形并为其分配唯一ID以及位置信息 const entity = viewer.entities.add({ id: 'polygon_' + index, polygon: { hierarchy: Cesium.Cartesian3.fromDegreesArray([ -109.080842, 45.002073, -104.058488, 45.002073, -104.053011, 41.003906, -105.728954, 41.003906 ]), height: 5000, material: Cesium.Color.BLUE.withAlpha(0.5), outline: true, outlineColor: Cesium.Color.BLACK }, label: { // 添加此部分以包含编号作为标签 text: String(index), // 将索引转换成字符串形式 font: '14px monospace', fillColor: Cesium.Color.WHITE, showBackground: false, horizontalOrigin: Cesium.HorizontalOrigin.LEFT, verticalOrigin: Cesium.VerticalOrigin.BOTTOM, position: new Cesium.Cartographic( Cesium.Math.toRadians(-106.86966), Cesium.Math.toRadians(43.0029895), 5000 ) } }); ``` 上述代码片段展示了怎样利用 `viewer.entities.add()` 函数中的 `label` 参数来设定每个图形上的文字说明[^3]。对于动态生成多个带有序列号的对象,则可以在循环结构内部调整变量 `index` 的值,并相应地改变每个多边形的位置和其他属性。 此外,如果希望这些编号能够随着视图的变化而自动调整位置以便始终保持可见状态,那么可能还需要进一步配置 `label` 的定位方式或者其他相关参数。
评论 3
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值