Text Cesiumjs-旋转文本
我想添加一个不总是面对相机的标签。相反,我希望它遵循定义的路径。类似于谷歌地图中的街道名称遵循街道方向(它们并不总是水平的) 我可以想到两种可能的文本轮换实现,但没有任何运气Text Cesiumjs-旋转文本,text,label,cesium,Text,Label,Cesium,我想添加一个不总是面对相机的标签。相反,我希望它遵循定义的路径。类似于谷歌地图中的街道名称遵循街道方向(它们并不总是水平的) 我可以想到两种可能的文本轮换实现,但没有任何运气 该Label()或Label:具有我尚未找到的旋转属性。例如: viewer.entities.add({ position : Cesium.Cartesian3.fromDegrees(-75.1641667, 39.9522222), label : { text : 'Philade
viewer.entities.add({
position : Cesium.Cartesian3.fromDegrees(-75.1641667, 39.9522222),
label : {
text : 'Philadelphia'
//rotation : Cesium.Math.toRadians(-45)
}
});
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)
});
有什么想法吗?如果您的文本没有更改,您可以使用图像,并通过Cesium.SingleTileManager Provider加载它。 如果文本确实发生了更改,可以使用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;
我知道如何旋转标签的唯一方法就像@Henri Aloni用canvas说的那样 铯已经有了一个名为writeTextToCanvas的函数 typescript中的示例:
viewer.entities.add({
position: Cartesain3.fromDegrees(34, 32, 0),
billboard: {
image: writeTextToCanvas('baruch', {
font: '30px sans-serif'
}),
rotation: 45
}
});