项目中是加载船舶。在zoom(地图当前缩放级别)大于13时,用加载的船舶图片作为船舶点图,标明船舶位置。当zoom小于等于13时,加载船舶模型和船舶名称,展示船舶姿态和名称信息。
一、先加载船舶
1、计算范围,可以以此条件获取船舶位置和信息和加载船舶数据
const getExtentParam=()=> {
//计算范围
const extent = this.globalCamera.computeViewRectangle();
const param = {
left: Cesium.Math.toDegrees(extent.west),
right: Cesium.Math.toDegrees(extent.east),
top: Cesium.Math.toDegrees(extent.north),
bottom: Cesium.Math.toDegrees(extent.south)
}
return param;
}
let extend = getExtentParam();
if (extend.bottom < 0 || extend.left < 0) return;
2、获取船舶列表,和其他需要的对象数据和函数,服务于后面船舶在地图上加载(地图初始化请前往Cesium 初始化地图-CSDN博客)
//接入船舶数据放在shipArry
let shipArry=[{
cog : 128,//航迹向
lat : 38.380798,//纬度
lon : 118.232803,//经度
mmsi : 99999991,//船舶mmsi,船舶的唯一标识
names : "山东青玄15",//船舶名称
thg : 234,//船艏向
type : 1,//船舶类别
}] //这里造了一条船的假数据
// 这里还需要提前创建的地图实例 viewer= new Viewer(参数)
const viewer= new Viewer(参数)
// 获取当前层级
const heightToZoom=(height)=> {
let A = 40487.57;
let B = 0.00007096758;
let C = 91610.74;
let D = -40467.74;
return Math.round(D + (A - D) / (1 + Math.pow(height / C, B)));
}
//获取层级
const getZoom=()=> {
let height = Math.ceil(viewer.camera.positionCartographic.height);
let zoom