cesium中定位方法使用

2023-11-11

cesium中定位到位置

在cesium中viewer.flyTo和Camera.flyTo的区别挺大,我们通常会用camera来定位,但当需要加上一个倾斜角的时候,可能定位的结果就和预想的区别很大
需求:矩形的中心点位置(110.0,35.8)为想要定位的中心点位置,相机倾斜25度,相机距离中心点的位置为5000

定位到点

viewer.flyTo定位结果

 function viewerflyToLonLat(lon,lat,alt) {
        if(entity)
            viewer.entities.remove(entity);
        entity = new Cesium.Entity({
            id : 'flyTmp',
            position : Cesium.Cartesian3.fromDegrees(lon, lat),
            point : {
                pixelSize : 10,
                color : Cesium.Color.WHITE.withAlpha(0.9),
                outlineColor : Cesium.Color.WHITE.withAlpha(0.9),
                outlineWidth : 1
            }
        });
        viewer.entities.add(entity);
        viewer.flyTo(entity, {
            offset : {
                heading : Cesium.Math.toRadians(0.0),
                pitch : Cesium.Math.toRadians(-25),
                range : alt
            }
        });
    }

定位结果如下:
这里写图片描述

camera.flyTo定位结果

 viewer.camera.flyTo({
            destination : Cesium.Cartesian3.fromDegrees(lon, lat,alt),
            orientation : {
                heading : Cesium.Math.toRadians(0.0),
                pitch : Cesium.Math.toRadians(-25.0),
                roll : 0.0
            }
        });

这里写图片描述
camera定位的方法明显偏离了预期的位置


定位到范围

需求:定位范围[110.2,35.6,112.3,36.7],相机倾斜角度25度

viewer.flyTo

 loactionTectEntity = viewer.entities.add({
            name: 'locationRectangle',
            id: 'locationRectangle',
            rectangle: {
                coordinates: rect,
                material: Cesium.Color.GREEN.withAlpha(1.0),
                height: 10.0,
                outline: false
            }
        });
        var flyPromise = viewer.flyTo(loactionTectEntity, {
            duration: 5,
            offset: new Cesium.HeadingPitchRange(0.0, Cesium.Math.toRadians(-20.0))
        });

这里写图片描述

camera.flyTo

  this.viewer.camera.flyTo({
            destination:rect,
            duration:5,
            orientation : {
                heading : Cesium.Math.toRadians(0.0),
                pitch : Cesium.Math.toRadians(-25.0),
                roll : 0.0
            }
        });

这里写图片描述

当相机的pitch不是默认值得时候,就会出现,camera定位的位置并不在屏幕中心位置,这时候使用viewer来定位就能解决问题

cesium中定位到矩形

描述:相机有倾斜角的时候,距离会变远,如上面第三张图所示,解决方法,倾斜后记录相机到矩形中心点的距离,然后再根据倾斜角度,计算新的距离,再viewer.flyto的完成后,再通过中心点离相机的距离,使用zoomTo来拉近一下距离

  loactionTectEntity = viewer.entities.add({
            name: 'locationRectangle',
            id: 'locationRectangle',
            rectangle: {
                coordinates: rect,
                material: Cesium.Color.GREEN.withAlpha(1.0),
                height: 10.0,
                outline: false
            }
        });
        var flyPromise = viewer.flyTo(loactionTectEntity, {
            duration: 5,
            offset: new Cesium.HeadingPitchRange(0.0, Cesium.Math.toRadians(-20.0))
        });

        flyPromise.then(function () {
            setPitch();
        });

        function setPitch() {
            var center = Cesium.Rectangle.center(rect);
            var car = Cesium.Cartesian3.fromRadians(center.longitude, center.latitude);
            var range = Cesium.Cartesian3.distance(car, viewer.camera.position) * Math.cos(20);
            viewer.zoomTo(loactionTectEntity, new Cesium.HeadingPitchRange(0.0, Cesium.Math.toRadians(-20.0), range));
        }

这里写图片描述

本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

cesium中定位方法使用 的相关文章

  • GPS/GIS 计算:根据运动/每小时预测未来位置的算法?

    寻找资源或算法来在导航应用程序中计算以下内容 如果我当前的 GPS 位置为 0 0 并且我以 15 英里 小时的速度前进 32 度 我如何计算 10 秒后我的位置 i e GPSCoordinate predictedCoord GPSCo
  • 如何在 OpenLayers 4 上添加点击事件?

    我需要将事件侦听器附加到 OpenLayers 4 中的功能 我已经尝试过feature on 点击 function 但它不起作用 如何将晒黑事件添加到功能中 先感谢您 没有click为功能注册的事件ol Feature目的 但click
  • 原则 2 的 GIS 扩展

    我想为我的 Doctrine 2 项目编写一个 GIS 地理空间数据 扩展 我知道如何编写简单的自定义函数和类型 为了适应MySQL特殊的存储格式 我在检索 存储数据时需要使用一些SQL函数 GeomFromWKB 和AsBinary 我找
  • Leaflet R 大地图的性能问题

    我想知道是否有其他人在使用 R 中的传单包绘制大量标记和多边形时遇到类似的问题 这通常应该是这样的 但是 当我放大 缩小地图时 多边形和标记显然不合适 或者您可以说底图没有正确调整 下面包含一个示例 当我绘制较小的区域或几个标记时 我不会遇
  • OpenGL:多个顶点的单个顶点属性?

    我有一个接受以下属性的顶点着色器 a posCoord 顶点位置 a texCoord 纹理坐标 传递给片段着色器 a alpha 透明度因子 传递给片段着色器 我正在渲染的对象都是 广告牌 一对直角三角形组成一个矩形 我正在使用一次调用g
  • Hello world WebGL 并行性示例

    围绕 WebGL 似乎有许多用于运行并行处理的抽象 例如 https github com MaiaVictor WebMonkeys https github com MaiaVictor WebMonkeys https github
  • 将 R data.frame 转换为 Javascript 数组

    我想将数据框的某些列保存为特定格式 JavaScript 格式 我尝试过使用toJSON from rjson包但这不起作用 我的结果应该是这样的 http leaflet github io Leaflet markercluster e
  • 三.js Raycaster intersectObjects

    我正在尝试修改这个例子 https github com timoxley threejs blob master examples webgl morphtargets md2 control html来自 Three js 通过鼠标点击
  • VS CODE 中的 WEBGL 自动完成

    我有一个学校项目 我需要使用 WEBGL 但是在没有自动补全的情况下编写所有代码是相当困难的 我没有找到合适的扩展名 你有想法吗 为了让 Visual Studio 代码能够自动完成 它需要知道变量的类型 例如 如果你有这个 const g
  • 如何在 webgl 中缩放纹理?

    我有一个尺寸为 800x600 的纹理 如何在 webgl 上缩放它
  • Pentaho CE 上的地图可视化

    我正在运行 Pentaho ce 5 3 我已经使用星型模式立方体对其进行了测试 并且工作正常 现在我想将 Postgis 中存储的维度 包括空间维度 的 mdx 查询可视化为地图 不知道是否可行 或者我应该为此添加任何插件吗 根据您想要可
  • 合并空间上接近的路径/线段的算法

    我正在寻找一种用于街道地图制图概括的几何算法 名称 在我的地图数据中 我有许多路径 点的有序列表 由线段连接 这些路径彼此靠近且几乎平行 我如何 1 识别这些 相邻路径 即如何找到比某个阈值更接近的路径 以及 2 将它们合并成一条路径 即如
  • WebGL - 如何传递无符号字节顶点属性颜色值?

    我的顶点由具有以下结构的数组组成 Position colour float float float byte byte byte byte 传递顶点位置没有问题 gl bindBuffer gl ARRAY BUFFER this vbo
  • Python 中使用 geoJSON 绘制多边形中的点

    我有一个包含大量多边形 特别是人口普查区 的 geoJSON 数据库 并且有很多长的纬度点 我希望存在一个有效的 Python 代码来识别给定坐标位于哪个人口普查区 但是到目前为止我的谷歌搜索还没有透露任何信息 Thanks 我发现了一个有
  • SQLite + SpatiaLite 问题

    我正在尝试使用 System Data SQLite 提供程序从 C 访问 SpatiaLite 当我尝试加载 SpatiaLite 扩展时 我总是得到 System Data SQLite SQLiteException SQLite e
  • 如何清除WebGL中的矩形区域?

    WebGL 有一个clear清除整个表面的方法 清除表面的特定矩形的最佳方法是什么 例如 我想将一个从 50 50 开始的 100x100 像素框设置为全零 ARGB 0 0 0 0 我现在能想到的就是用一个写入零的片段着色器绘制一个四边形
  • WebGL 如何设置深度缓冲区中的值?

    在 OpenGL 中 深度缓冲区值是根据场景的近剪裁平面和远剪裁平面计算的 参考 从深度缓冲区获取真实的 z 值 https stackoverflow com questions 6652253 getting the true z va
  • 如何优化 Three.js 中多个 sphereGeometry 的渲染?

    我想优化 Three js 中 sphereGeometry 的渲染 因为它成为我的程序的瓶颈 javascript程序如下所示 var sphereThree for var idSphere 0 idSphere lt numSpher
  • 查看 TIN 文件的工具

    有没有免费的开源工具可用于查看 TIN 不规则三角形网络 文件 我从 LAS 激光雷达数据 文件获得的 thanks 这在很大程度上取决于格式 大多数从 LIDAR 数据生成的 TIN 都采用标准 GIS 格式之一 在这种情况下 良好的开源
  • 在 R 中,如何将 SpatialPolygons* 转换为地图对象

    我正在尝试利用ProportionalSymbolMap在此定义的地图JSS论文 http www jstatsoft org v15 i05 为了绘制比例符号 我首先需要一个地图类的对象 The methods http www ncea

随机推荐

  • c语言中变量不初始化会怎么样?

    目录 变量初始化 未初始化 随机数的产生 产生原理 初始化必要性 问题来源 在日常学习结构体的语法时看到文章中用数组进行举例 进行输出 在讨论数组是否初始化 输出的值的问题 代码如下 include
  • CTFHUB-UA注入

    User Agent User Agent 通常就是用户的浏览器相关信息 例如 User Agent Mozilla 5 0 X11 Linux x86 64 rv 12 0 Gecko 20100101 Firefox 12 0 Hack
  • HTTP Status 500 An exception occurred processing JSP page

    问题代码 出现异常界面 从上图可知在19处出现了异常 主要有两处 以及 为了很好的解决以上错误 我们将依次把传进来的各个参数在tomcat控制台上打印输出 先看看结果 主要操作代码 控制台显示结果 从以上输出可看到getRemoteAddr
  • Object.keys()、Object.values()、Object.entries()详解

    在JavaScript中 Object keys 是一个内置函数 用于获取一个对象中所有可枚举属性的名称 并返回一个包含这些属性名称的数组 以下是使用Object keys 函数的示例 const obj a 1 b 2 c 3 const
  • 代码混淆后可能出现的问题

    1 ClassNotFoundException NoSuchMethodError 原因 这种异常会在好多情况下出现 比如 本地代码通过反射调用其他的类 但是经过了混淆之后 就会出现如上异常 调用了JNI之后 C或者C 和java代码进行
  • 前端面试题复习二

    组件中写 name 选项有什么作用 项目使用 keep alive 时 可搭配组件 name 进行缓存过滤 DOM 做递归组件时需要调用自身 name Vue devtools 调试工具里显示的组见名称是由 Vue 中组件 name 决定的
  • 战双服务器维护,战双帕弥什维护到几点 战双帕弥什维护什么时候结束

    战双帕弥什今日正式火爆开测 随着大量玩家的加入 服务器也难免出现了过载情况 很多玩家在登陆时出现了战双帕弥什提示服务器未开放请稍后再试的情况 那么战双帕弥什维护什么时候结束 战双帕弥什维护原因是什么 快一起了解一下吧 战双帕弥什维护原因 1
  • C++ 匿名对象的生命周期——强化训练(二)

    include
  • STM32F10X单片机学习之PWM.C代码注解

    include stm32f10x h Device header void PWM Init void RCC APB1PeriphClockCmd RCC APB1Periph TIM2 ENABLE 开启 APB1 外设总线上的外设时
  • Unity最新热更新框架 hybridclr_addressable

    GitHub YMoonRiver hybridclr addressable 开箱即用的商业游戏框架 集成了主流的开发工具 将主流的GameFramework修改 支持Addressable和AssetBundle 已完善打包工具和流程
  • “黑色星期五”数据分析实战

    项目背景 美国圣诞节大采购一般是从感恩节之后开始的 感恩节是每年11月的第四个星期四 因此它的第二天 也就是美国人大采购的第一天 在这一天 美国的商场都会推出大量的打折和优惠活动 以在年底进行最后一次大规模的促销 这有点类似于淘宝的双十一购
  • Java项目——文档搜索引擎

    文章目录 1 项目概述 2 准备阶段 2 1 项目创建 2 2 准备静态页面 3 搜索逻辑 4 分词 5 处理 HTML 文件 5 1 枚举文件夹中所有文件 5 2 预处理文件 5 2 1 获取标题 5 2 2 获取 URL 5 2 3 获
  • [VUE] 过滤器函数

    VUE 过滤器可以用在两个地方 双花括号插值和 v bind 表达式 代码如下 message capitalize div div 你可以在一个组件的选项中定义本地的过滤器 filters capitalize function valu
  • Apple Magic Mouse 卡顿的问题

    更新时间 2022 06 30 17 58 37 发现在公司使用就会很卡顿 在家里使用就很流畅 感觉还是公司信号被干扰了 更新时间 2022年06月13日 尝试过下面所以的方法 以及怀疑是键盘蓝牙干扰 把键盘关掉 最后的结论 都没什么卵用
  • opencv读写和保存中文路径图片及base64与图片互转

    文章目录 1 opencv读取中文路径图片 2 opencv保存中文路径图片 3 图片转base64 4 base64转图片 有几点要注意 cv2 imread filename flags cv2 imwrite filename img
  • 交叉编译器的安装方法

    首先简单介绍一下 所谓的搭建交叉编译环境 即安装 配置交叉编译工具链 在该环境下编译出嵌入式Linux系统所需的操作系统 应用程序等 然后再上传到目标机上 交叉编译工具链是为了编译 链接 处理和调试跨平台体系结构的程序代码 对于交叉开发的工
  • STL 常用函数

    STL 常用函数 本文参考自 C STL常用函数总结 总结学习用 sort 函数 排序函数 sort 起始地址 末尾地址 cmp 其中cmp是可以自己定义的函数名 sort a a 5 sort vec begin vec end bool
  • ajax内置对象有什么,用js内置对象XMLHttpRequest 来用ajax

    步骤 用XMLHTTPRequest来进行ajax异步数据交交互 主要有几个步骤 1 创建XMLHTTPRequest对象 最复杂的一步 if window XMLHttpRequest code for IE7 Firefox Chrom
  • Apache Beam程序向导4

    今天在集群上实验Beam On Spark的时候 遇到一个坑爹的问题 这个问题总结起来是一个java lang NoClassDefFoundError 错误 具体错误如下图1所示 图1 错误提示 该错误提示SparkStreamingCo
  • cesium中定位方法使用

    cesium中定位到位置 在cesium中viewer flyTo和Camera flyTo的区别挺大 我们通常会用camera来定位 但当需要加上一个倾斜角的时候 可能定位的结果就和预想的区别很大 需求 矩形的中心点位置 110 0 35