使用Cesium JS改变标签的偏移量
Change offset of label using Cesium JS
我想在铯中拖动一个标签(或标签集合)而不改变其位置。我想在创建标签后改变它的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的值,但在地图上没有变化。
提前感谢!
你的代码有两个问题。
- 最后一行
entity.pixelOffset
分配错误。应该是entity.label.pixelOffset
。这就是你不能工作的主要原因。 -
LabelGraphics.pixelOffset
是Cartesian2
实例,不是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);
相关文章:
- 添加新数据时D3.JS条形图列偏移量
- 当偏移量改变时滚动顶部
- 引导数据偏移量底部
- 可以在调整窗口大小时重新调整stellar.js的元素偏移量
- 可滚动元素,如何在调整大小时更改顶部偏移量
- 使用JavaScript日期的任何时间的时区偏移量
- 时刻时区:UTC 偏移量差异
- jQuery偏移量顶部没有'工作不正常
- 如何获取当前时区偏移量(并正确格式化)
- d3.mouse 偏移量返回的值不正确
- jQuery根据鼠标位置计算DIV偏移量和边界
- 更改 for 循环中 SVG 行的笔触虚线偏移量
- 时区偏移量计算
- jquery 如何设置偏移量 () 值
- 在javascript中向本地时间戳添加时间戳偏移量
- jquery ui draggable中的奇怪偏移量
- 如何在发布JavaScript日期对象时保留时区偏移量
- 如何使用javascript获取&使用字符偏移量设置插入符号位置
- 使用Cesium JS改变标签的偏移量
- window.getSelection()与HTML标签的偏移量