javascript - 使用Cesium JS更改标签的偏移量

标签 javascript cesiumjs

我想在Cesium中拖动标签(或标签集合)而不改变其位置。 创建标签后,我考虑过更改其 pixelOffset。我这样做了:

            var entity = mapa.getViewer.entities.add({
            position: Cesium.Cartesian3.fromDegrees(-75.1641667, 39.9522222),
            billboard: {
                image: pinBuilder.fromColor(Cesium.Color.SALMON, 48),
                verticalOrigin: Cesium.VerticalOrigin.BOTTOM
            },
            label: {
                text: ' Ponto',
                verticalOrigin: Cesium.VerticalOrigin.TOP,
                horizontalOrigin: Cesium.HorizontalOrigin.RIGHT,
                font: '20px Helvetica',
                fillColor: Cesium.Color.WHITE,
                outlineWidth: 1,
                style: Cesium.LabelStyle.FILL,
                pixelOffset: new Cesium.Cartesian3(0,0,0)
            }
            });
            //Tried to update the pixelOffset value
            entity.pixelOffset = new Cesium.Cartesian3(200, 20);

但是什么也没发生。我在控制台上记录了该实体,并且出现了 PixelOffset 的值,但 map 上没有任何变化。

提前致谢!

最佳答案

您的代码有 2 个问题。

  1. 分配 entity.pixelOffset 的最后一行不正确。它应该是entity.label.pixelOffset。这是你不起作用的主要原因。
  2. LabelGraphics.pixelOffsetCartesian2 实例,而不是 Cartesian3 实例。由于 JavaScript 的动态类型,代码可以与其中任何一个一起使用,但使用正确的类型是一个很好的做法,并且将帮助浏览器更好地优化代码。

也无需在创建时设置 PixelOffset,因为默认值为 Cartesian2.ZERO 并且创建新实例只会浪费内存。

这是代码的更新工作版本:

var entity = mapa.getViewer.entities.add({
    position: Cesium.Cartesian3.fromDegrees(-75.1641667, 39.9522222),
    billboard: {
        image: pinBuilder.fromColor(Cesium.Color.SALMON, 48),
        verticalOrigin: Cesium.VerticalOrigin.BOTTOM
    },
    label: {
        text: ' Ponto',
        verticalOrigin: Cesium.VerticalOrigin.TOP,
        horizontalOrigin: Cesium.HorizontalOrigin.RIGHT,
        font: '20px Helvetica',
        fillColor: Cesium.Color.WHITE,
        outlineWidth: 1,
        style: Cesium.LabelStyle.FILL
    }
});

entity.label.pixelOffset = new Cesium.Cartesian2(200, 20);

关于javascript - 使用Cesium JS更改标签的偏移量,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/32830066/

相关文章:

javascript - Cesiumjs 从矢量计算俯仰、偏航、航向

cesiumjs - 如何在 Cesium 中创建多重多边形

android - 如何使用铯和地理服务器在android应用程序中显示wms层?

javascript - 在铯中画几个三 Angular 形

javascript - 我如何获得 "codify"和 "beautify"代码?

javascript - 带有变换旋转的顶部和左侧位置

javascript - 如何制作 YouTube 无边框播放器?

javascript - 如何有效地确定闭合深度

javascript - 如何防止多次点击 AngularJS 中的链接?

javascript - Cesium KML 轮询数据