cesium模仿百度地图二三维切换

这篇具有很好参考价值的文章主要介绍了cesium模仿百度地图二三维切换。希望对大家有所帮助。如果存在错误或未考虑完全的地方,请大家不吝赐教,您也可以点击"举报违法"按钮提交疑问。

百度地图二三维切换效果感觉比cesium自带的更平滑

不过百度地图的二三维切换只是简单的三维视角切换,二维是垂直视角文章来源地址https://www.toymoban.com/news/detail-512014.html

    
    //传入viewer和要切换的维数    
    onChange2D3DClick(viewer,index) {
       //获取屏幕中心视点坐标
      let centerResult = viewer.camera.pickEllipsoid(
        new Cesium.Cartesian2(
          viewer.canvas.clientWidth / 2,
          viewer.canvas.clientHeight / 2,
        ),
      )
      if (index === 2) {
        // 切到二维地图,如果设置到-90度,视角会自动跳转到正北,所以只设置到-88度
        this.rotateCamera(centerResult,-88);
      } else {
        // 切到三维地图
        this.rotateCamera(centerResult,-30);
      }
    },
    //根据视点切换垂直视角
    rotateCamera(options,num) {
      const viewer = map3d.getViewer();
      var position = options;
      // 给定切换所需时间,比如0.5s
      var flytime = 0.5;
      var initialPitch = viewer.camera.pitch;
      var pitch3d=Cesium.Math.toRadians(num);
      var angle = (pitch3d-initialPitch)/flytime;//每秒转动的度数
      // 获取相机和视点距离
      var distance = Cesium.Cartesian3.distance(options, viewer.scene.camera.positionWC);
      var startTime = Cesium.JulianDate.fromDate(new Date());

      var stopTime = Cesium.JulianDate.addSeconds(startTime, flytime, new Cesium.JulianDate());

      viewer.clock.startTime = startTime.clone();  // 开始时间
      viewer.clock.stopTime = stopTime.clone();     // 结速时间
      viewer.clock.currentTime = startTime.clone(); // 当前时间
      viewer.clock.clockRange = Cesium.ClockRange.CLAMPED; // 行为方式
      viewer.clock.clockStep = Cesium.ClockStep.SYSTEM_CLOCK; // 时钟设置为当前系统时间; 忽略所有其他设置。
      // 相机的当前heading
      var initialHeading = viewer.camera.heading;

      var Exection = function TimeExecution() {
        // 当前已经过去的时间,单位s
        var delTime = Cesium.JulianDate.secondsDifference(viewer.clock.currentTime, viewer.clock.startTime);
        // 根据过去的时间,计算偏航角的变化
        var heading = initialHeading;
        // 相机看点的角度,如果大于0那么则是从地底往上看,所以要为负值,这里取-30度
        var pitch = delTime * angle + initialPitch;

        viewer.camera.lookAt(position, new Cesium.HeadingPitchRange(heading, pitch, distance));
        //解除目标锁定
        viewer.camera.lookAtTransform(Cesium.Matrix4.IDENTITY)
        if (Cesium.JulianDate.compare(viewer.clock.currentTime, viewer.clock.stopTime) >= 0) {
          viewer.clock.onTick.removeEventListener(Exection);
        }
      };
      viewer.clock.onTick.addEventListener(Exection);
    },

到了这里,关于cesium模仿百度地图二三维切换的文章就介绍完了。如果您还想了解更多内容,请在右上角搜索TOY模板网以前的文章或继续浏览下面的相关文章,希望大家以后多多支持TOY模板网!

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处: 如若内容造成侵权/违法违规/事实不符,请点击违法举报进行投诉反馈,一经查实,立即删除!

领支付宝红包 赞助服务器费用

相关文章

  • 前端:运用html+css+js模仿百度热搜电影榜鼠标移入特效

    1. 实现原理 百度热搜上电影榜鼠标移入特效如上图所示。个人觉得上述特效实现原理为使用相对定位、绝对定位实现的(鼠标移入和没有移入时,元素布局有一些不同而已)。至于鼠标移入时,出现延迟效果,则是在css上设置transition(用于设置过渡效果的)实现的。我的实现效果

    2024年02月15日
    浏览(62)
  • Cesium 三维热力图

    要用cesium做个三维热力图的效果,但在网上没找到现成的方案,摸索了很久,最终的实现思路如下: 1、通过heatmapjs库生成二维热力图,拿到canvas; 2、canvas的rgb像素值转hsl,将h分量作为该像素点的高度值的参考(即越红高度越高); 3、将整个canvas划分,获取每个顶点的坐标

    2024年02月12日
    浏览(41)
  • cesium绘制路线,实现三维漫游

    1.鼠标点击添加点和线 2.右键结束绘制时,计算折线中心点和绘制方向;折线中心点可以替换为模型中心点,这样就会看着这个点飞行;计算方向主要是判断绘制的顺序是顺时针绘制的还是逆时针绘制的 3.点击飞行 pitch默认为-5 setExtentTime: 在viewer的clock中设置时间间隔,flytime默认为

    2024年02月05日
    浏览(42)
  • 前端中的三维技术Cesium

    前端中的三维技术主要有以下几种: WebGL:WebGL是一种基于OpenGL ES 2.0标准的3D图形渲染技术,它能够在Web浏览器中呈现出高性能、交互式的3D视觉效果。 Three.js:Three.js是一个轻量级的JavaScript库,它为WebGL提供了更高层次的抽象,使得使用WebGL变得更加容易。通过Three.js,开发者

    2024年02月06日
    浏览(54)
  • cesium加载三维模型3dtiles

    目的:为避免跨域 输入cmd命令 python3 -m http.server 5500 http://127.0.0.1:5500/data/mars3d-max-shihua-3dtiles-master/tileset.json http://127.0.0.1:5500/cesium/cesium%E5%8A%A0%E8%BD%BD3dtile2.html

    2024年02月13日
    浏览(75)
  • 迈向三维:vue3+Cesium.js三维WebGIS项目实战

    写在前面:随着市场对数字孪生的需求日益增多,对于前端从业者的能力从对框架vue、react的要求,逐步扩展到2D、3D空间的交互,为用户提供更紧密的立体交互。近年来前端对GIS的需求日益增多。本文将记录WebGIS的学习之旅,从实战项目入门,挖掘Cesium.js API,并逐步丰富项目

    2024年04月24日
    浏览(64)
  • Cesium:3DTiles三维模型高度调整

            地形遮挡属性          如下两张图所示,输入高度值,根据需要调整模型高度。例如:针对近地面的管线数据,可能有一部分是埋在地下的,那么,如果开启了地形遮挡属性(即:设置为true,默认是false),那么,在进行场景渲染加载模型切片时,就会进行深度测

    2024年02月11日
    浏览(88)
  • 050:cesium加载mapbox卫星地图、mapbox地形地图

    第050个 点击查看专栏目录 本示例的目的是介绍如何在vue+cesium中加载mapbox卫星地图、mapbox地形地图。 直接复制下面的 vue+cesium源代码,操作2分钟即可运行实现效果. 示例效果

    2023年04月18日
    浏览(83)
  • Cesium教程(十六):动态数据三维可视化

    Cesium时间系统在动态数据可视化中发挥着重要作用。 CZML是Cesium团队制定的一种用来描述动态场景的JSON架构语言。可以描述点、线、多边形、体及其他图元。 实现效果::模型车会沿着黄色的轨迹线前行 这里以轨迹数据可视化为例,代码如下:

    2024年02月08日
    浏览(61)
  • 前端使用Cesium加载三维模型全攻略

    想象一下,地球在你眼前旋转,上面还有各种3D模型,是不是很酷?Cesium是一个超酷的库,专门用来创建超炫的3D地球和地图。好,言归正传,今天这篇文章就分享一下前端如何使用Cesium加载三维模型。 首先,确保你已经安装了Cesium库。可以从Cesium官网下载最新版本的库文件

    2024年04月17日
    浏览(52)

觉得文章有用就打赏一下文章作者

支付宝扫一扫打赏

博客赞助

微信扫一扫打赏

请作者喝杯咖啡吧~博客赞助

支付宝扫一扫领取红包,优惠每天领

二维码1

领取红包

二维码2

领红包