上一篇文章结尾说到能通过entities类来创建小车模型并实现键盘控制,这篇就来演示一下。关于上一篇文章 Cesium开发实践(一)控制小车并视角跟随 大家也可以看看。
效果图
区别
上一篇创建模型的方法:
let carPrimitive = scene.primitives.add(Cesium.Model.fromGltf({
id:'mycar',
url:"你的URL地址",
modelMatrix: Cesium.Transforms.headingPitchRollToFixedFrame(position, hpRoll, Cesium.Ellipsoid.WGS84,fixedFrameTransforms),
}))
entities创建模型
let mycar = viewer.entities.add({
id:'car',
// 位置
position: new Cesium.CallbackProperty(getPositin, false),
// 姿态
orientation: new Cesium.CallbackProperty(getOrientation, false),
model: {
uri: "你的URL地址",
}
});
可以看到两种方法添加的参数不一样,这个orientation是姿态,包含了Heading,Pitch,Roll。
我选用的方法是通过计算下个点位的经纬度坐标来刷新模型的位置,相信有很多小伙伴会遇到跟我一样的问题,直接修改position,值会改变但是模型的位置并不会变化,然后我去查看了Cesium的API文档,这里想要修改position或者orientation都需要使用回调函数。方法很简单,只需要返回你需要的坐标或者方位就好了。
整体代码
let radian = Cesium.Math.toRadians(2.0);
let speed = 0.4;
let speedVecto