我想添加一个不总是面对镜头的标签。相反,我希望它遵循一条定义的路径。类似于谷歌地图中街道名称的方向(并不总是横向的)。
我可以想到两个可能的实现旋转文本,但没有任何运气。
或者这个
var labels = scene.primitives.add(new Cesium.LabelCollection());
var l = labels.add({
position : Cesium.Cartesian3.fromRadians(longitude, latitude, height),
text : 'Hello World',
font : '24px Helvetica'
//rotation: Cesium.Math.toRadians(-45)
});或者,cesiumjs可以将文本识别为一个固定位置的2D对象,并在视角发生变化时对其进行适当的倾斜。
有什么想法吗?
发布于 2015-12-31 19:48:45
如果您的文本没有改变,您可以使用一个图像,并通过Cesium.SingleTileImageryProvider加载它。如果您的文本确实发生了更改,您可以使用billboard.image,将HTML设置为它,并按如下方式旋转画布:
var c = document.getElementById("myCanvas");
var ctx = c.getContext("2d");
ctx.font = "20px Georgia";
ctx.fillText("Hello World!", 10, 50);
ctx.font = "30px Verdana";
// Create gradient
var gradient = ctx.createLinearGradient(0, 0, c.width, 0);
gradient.addColorStop("0", "magenta");
gradient.addColorStop("0.5", "blue");
gradient.addColorStop("1.0", "red");
// Fill with gradient
ctx.rotate(20*Math.PI/180);
ctx.fillStyle = gradient;
ctx.fillText("Big smile!", 10, 90);
billboard.image = ctx;发布于 2020-11-25 08:47:25
“我知道如何旋转标签的唯一方法是像”亨利·阿罗尼用帆布说的那样。
铯已经有了一个叫做: writeTextToCanvas的函数。
打字本中的示例:
viewer.entities.add({
position: Cartesain3.fromDegrees(34, 32, 0),
billboard: {
image: writeTextToCanvas('baruch', {
font: '30px sans-serif'
}),
rotation: 45
}
});https://stackoverflow.com/questions/31465308
复制相似问题