gpt4 book ai didi

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

转载 作者:行者123 更新时间:2023-11-28 18:59:46 24 4
gpt4 key购买 nike

我想在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/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com