当前位置: 首页 > wzjs >正文

wordpress地址和站点地址错链接买卖平台

wordpress地址和站点地址错,链接买卖平台,深圳网站开发公司哪家好,科技之星目录 1、使用glb模型进行实时轨迹 2、使用图片进行实时轨迹 基于上一篇加载基础地图的代码上继续开发 vue中加载Cesium地图(天地图、高德地图)-CSDN博客文章浏览阅读164次。vue中加载Cesium三维地球https://blog.csdn.net/ssy001128/article/details…

目录

1、使用glb模型进行实时轨迹 

2、使用图片进行实时轨迹 


基于上一篇加载基础地图的代码上继续开发

vue中加载Cesium地图(天地图、高德地图)-CSDN博客文章浏览阅读164次。vue中加载Cesium三维地球 https://blog.csdn.net/ssy001128/article/details/148474799继续在cesium.js中加入需要实现的功能函数方法

 经纬度数据

let interval = null
let coordinateData = [{lon: 110,lat: 30,id: "0",name: "traject0",},{lon: 110.2,lat: 30,id: "1",name: "traject1",},{lon: 110.4,lat: 30.2,id: "2",name: "traject2",},{lon: 110.8,lat: 30.4,id: "3",name: "traject3",},{lon: 111,lat: 31,id: "4",name: "traject4",},{lon: 111.3,lat: 31,id: "5",name: "traject5",},{lon: 111.6,lat: 31,id: "6",name: "traject6",},{lon: 111.9,lat: 31,id: "7",name: "traject7",},{lon: 112,lat: 31,id: "8",name: "traject8",},{lon: 112.3,lat: 31,id: "9",name: "traject9",},{lon: 112.5,lat: 31,id: "10",name: "traject10",},{lon: 112.8,lat: 31,id: "11",name: "traject11",},{lon: 113,lat: 31,id: "12",name: "traject12",},{lon: 114,lat: 31,id: "13",name: "traject13",},{lon: 115.3,lat: 32,id: "14",name: "traject14",},{lon: 115.5,lat: 32,id: "15",name: "traject15",},{lon: 115.8,lat: 31.8,id: "16",name: "traject16",},{lon: 116,lat: 31.4,id: "17",name: "traject17",},{lon: 116.2,lat: 31.1,id: "18",name: "traject18",},{lon: 116.5,lat: 30.5,id: "19",name: "traject19",},{lon: 115,lat: 30.2,id: "20",name: "traject20",},{lon: 114,lat: 29.8,id: "21",name: "traject21",},{lon: 113,lat: 29.6,id: "22",name: "traject22",},{lon: 112,lat: 29.4,id: "23",name: "traject23",},{lon: 111,lat: 30.5,id: "24",name: "traject24",},{lon: 110,lat: 30.4,id: "25",name: "traject25",},{lon: 109,lat: 30.6,id: "26",name: "traject26",},{lon: 108,lat: 36,id: "27",name: "traject27",},
];

1、使用glb模型进行实时轨迹 

模型每次位置改变的朝向可能没有那么标准角度

// 添加使用glb模型进行实时轨迹
export function addGlbTrajectory() {// 先添加初始线条let arr = [coordinateData[0].lon, coordinateData[0].lat];let glbEntity = viewer.entities.add({name: "GLB模型示例",position: Cesium.Cartesian3.fromDegrees(coordinateData[0].lon,coordinateData[0].lat),// 设置模型初始朝向(这里设置为朝北,即heading=0)orientation: Cesium.Transforms.headingPitchRollQuaternion(Cesium.Cartesian3.fromDegrees(coordinateData[0].lon,coordinateData[0].lat),new Cesium.HeadingPitchRoll(Cesium.Math.toRadians(270), // 朝向(heading):0表示朝北,正数为顺时针旋转(东:90,南:180,西:270)0, // 俯仰角(pitch):0表示水平0 // 横滚角(roll):0表示不倾斜)),model: {uri: "car.glb",scale: 2.0,minimumPixelSize: 1228,maximumScale: 20000,incrementallyLoadTextures: true,clampAnimations: true,shadows: Cesium.ShadowMode.ENABLED,},});// viewer.trackedEntity = glbEntity;let i = 0;interval = setInterval(() => {// 当数组下标还有数据时if (coordinateData[i + 1]) {arr.push(coordinateData[i + 1].lon, coordinateData[i + 1].lat);// 获取当前点和下一点的坐标const currentPos = Cesium.Cartesian3.fromDegrees(coordinateData[i].lon,coordinateData[i].lat);const nextPos = Cesium.Cartesian3.fromDegrees(coordinateData[i + 1].lon,coordinateData[i + 1].lat);// 更新位置glbEntity.position = nextPos;// 计算朝向(从当前点指向下一点的方向)const heading = -(computeHeading(currentPos, nextPos));// 更新朝向glbEntity.orientation = Cesium.Transforms.headingPitchRollQuaternion(nextPos,new Cesium.HeadingPitchRoll(heading, 0, 0));// 更新现有模型的位置,而不是创建新模型// glbEntity.position = Cesium.Cartesian3.fromDegrees(//   coordinateData[i + 1].lon,//   coordinateData[i + 1].lat// );// 轨迹viewer.entities.add({id: coordinateData[i + 1].id,name: coordinateData[i + 1].name,polyline: new Cesium.PolylineGraphics({positions: Cesium.Cartesian3.fromDegreesArray(arr),width: 5, // 线条宽度clampToGround: true, // 贴地显示material: Cesium.Color.fromCssColorString("#0f0"), // 线条材质颜色}),});i++;} else {// 已全部获取clearInterval(interval);interval = null;}}, 3000);
}// 计算两点之间的朝向角(弧度)
function computeHeading(start, end) {const direction = Cesium.Cartesian3.subtract(end,start,new Cesium.Cartesian3());const up = Cesium.Cartesian3.normalize(start, new Cesium.Cartesian3());// 计算东方向(垂直于向上方向和北方向)const east = Cesium.Cartesian3.cross(new Cesium.Cartesian3(0, 0, 1),up,new Cesium.Cartesian3());Cesium.Cartesian3.normalize(east, east);// 计算北方向(垂直于东方向和向上方向)const north = Cesium.Cartesian3.cross(up, east, new Cesium.Cartesian3());// 计算方向向量在水平面(东-北平面)上的投影const horizontalDirection = new Cesium.Cartesian3();Cesium.Cartesian3.subtract(direction,Cesium.Cartesian3.multiplyByScalar(up,Cesium.Cartesian3.dot(direction, up),new Cesium.Cartesian3()),horizontalDirection);Cesium.Cartesian3.normalize(horizontalDirection, horizontalDirection);// 计算朝向角(从北方向顺时针旋转的角度)const dot = Cesium.Cartesian3.dot(north, horizontalDirection);const cross = Cesium.Cartesian3.dot(east, horizontalDirection);return Math.atan2(cross, dot);
}

 

glb模型实时轨迹

2、使用图片进行实时轨迹 

111.png

// 使用图片进行实时轨迹
export function addImgTrajectory() {// 先添加初始线条let arr = [coordinateData[0].lon, coordinateData[0].lat];// 添加一个Billboard作为标记let billboards  = new Cesium.BillboardGraphics({image: "111.png", // 图片路径width: 50, // 图片宽度height: 50, // 图片高度rotation: 0})let glbEntity = viewer.entities.add({position: Cesium.Cartesian3.fromDegrees(110, 30.0), // 经纬度坐标billboard: billboards});let i = 0;interval = setInterval(() => {// 当数组下标还有数据时if (coordinateData[i + 1]) {arr.push(coordinateData[i + 1].lon, coordinateData[i + 1].lat);// 更改图片位置// 更新现有模型的位置,而不是创建新模型glbEntity.position = Cesium.Cartesian3.fromDegrees(coordinateData[i + 1].lon,coordinateData[i + 1].lat);let arc = 0;if ((coordinateData[i + 1].lon - coordinateData[i].lon >= 0 &&coordinateData[i + 1].lat - coordinateData[i].lat >= 0) ||(coordinateData[i + 1].lon - coordinateData[i].lon < 0 &&coordinateData[i + 1].lat - coordinateData[i].lat > 0)) {arc = Math.atan((coordinateData[i + 1].lon - coordinateData[i].lon) /(coordinateData[i + 1].lat - coordinateData[i].lat));} else if ((coordinateData[i + 1].lon - coordinateData[i].lon > 0 &&coordinateData[i + 1].lat - coordinateData[i].lat < 0) ||(coordinateData[i + 1].lon - coordinateData[i].lon < 0 &&coordinateData[i + 1].lat - coordinateData[i].lat < 0)) {arc =Math.PI +Math.atan((coordinateData[i + 1].lon - coordinateData[i].lon) /(coordinateData[i + 1].lat - coordinateData[i].lat));}// 更新图片朝向glbEntity.billboard.rotation._value = -(arc)// 轨迹viewer.entities.add({id: coordinateData[i + 1].id,name: coordinateData[i + 1].name,polyline: new Cesium.PolylineGraphics({positions: Cesium.Cartesian3.fromDegreesArray(arr),width: 5, // 线条宽度clampToGround: true, // 贴地显示material: Cesium.Color.fromCssColorString("#0f0"), // 线条材质颜色}),});i++;} else {// 已全部获取clearInterval(interval);interval = null;}}, 1000);
}

 

图片实时轨迹

http://www.dtcms.com/wzjs/329431.html

相关文章:

  • 合肥网站制作公司排名网站建设与管理
  • 网站建设优化公司排名软文代写新闻稿
  • 东莞网站开发技术公司电话黄页网络的推广
  • 沈阳网站设计定制网站建设宁波seo推荐推广渠道
  • 学校户网站建设方案中国最新新闻
  • 网站建设运作流程兔子bt樱桃搜索磁力天堂
  • 昆山营销型网站建设太原网络推广公司哪家好
  • 做网站干什么我对网络营销的理解
  • 公司注册资金增加怎么办理谷歌sem和seo区别
  • 大企业网站建设公司线上推广app
  • 宇宙企画网站google play下载官方版
  • 无锡网站建设课程关键词优化排名用哪些软件比较好
  • 济南营销型网站建设域名批量查询工具
  • 做文案的人看什么网站开户推广竞价开户
  • 手机网站设计咨询太原百度公司地址
  • 新媒体网站建设方案色盲怎么治疗
  • 城乡与建设部网站公司网站域名续费一年多少钱
  • 静安手机网站建设百度云搜索引擎入口百度网盘
  • 企业软文营销发布平台上海外贸seo公司
  • 做分类信息网站模板百度搜索推广操作简要流程
  • WordPress网站结构优化湖南专业seo公司
  • 网页制作软件哪个好用绍兴百度推广优化排名
  • 百度有网站建设吗上海搜索seo
  • 网站建设数据库搭建网络营销中心
  • 宁波网站建设关键词排名推广软件
  • 龙岗互联网公司seo是一种利用搜索引擎
  • 网站运营工作具体做啥搜索引擎优化关键词的处理
  • 江苏省建设厅网站查询简易网站制作
  • asp.net做电商网站页面网络营销课程
  • 潍坊商城网站建设周口搜索引擎优化