Cesium 获取屏幕窗口经纬度范围(2D和3D)

Cesium 坐标转换(各坐标/角度弧度互相转换) 阅读详情

背景:

由于entity实体过多,而又要一次性加载,所以用聚合(后台聚合),前端cesium也可以聚合,cesium前端渲染大量点很快很快的,但是由于请求后台时数据量太大,光请求时间都很长。不能忍受,所以改为后台聚合。后台聚合用的是pg的空间函数。前端去后台请求时  需要要携带当前屏幕所在地理范围参数(经纬度格式) 

获取当前屏幕所在地理范围:

getViewExtend() {
      let params = {};
      let extend = viewer.camera.computeViewRectangle();
      if (typeof extend === "undefined") {
        //2D下会可能拾取不到坐标,extend返回undefined,所以做以下转换
        let canvas = viewer.scene.canvas;
        let upperLeft = new Cesium.Cartesian2(0, 0);//canvas左上角坐标转2d坐标
        let lowerRight = new Cesium.Cartesian2(
          canvas.clientWidth,
          canvas.clientHeight
        );//canvas右下角坐标转2d坐标

        let ellipsoid = viewer.scene.globe.ellipsoid;
        let upperLeft3 = viewer.camera.pickEllipsoid(
          upperLeft,
          ellipsoid
        );//2D转3D世界坐标

        let lowerRight3 = viewer.camera.pickEllipsoid(
          lowerRight,
          ellipsoid
        );//2D转3D世界坐标

        let upperLeftCartographic = viewer.scene.globe.ellipsoid.cartesianToCartographic(
          upperLeft3
        );//3D世界坐标转弧度
        let lowerRightCartographic= viewer.scene.globe.ellipsoid.cartesianToCartographic(
          lowerRight3
        );//3D世界坐标转弧度

        let minx = Cesium.Math.toDegrees(upperLeftCartographic.longitude);//弧度转经纬度
        let maxx = Cesium.Math.toDegrees(lowerRightCartographic.longitude);//弧度转经纬度

        let miny = Cesium.Math.toDegrees(lowerRightCartographic.latitude);//弧度转经纬度
        let maxy = Cesium.Math.toDegrees(upperLeftCartographic.latitude);//弧度转经纬度

        console.log("经度:" + minx + "----" + maxx);
        console.log("纬度:" + miny + "----" + maxy);

        params.minx = minx;
        params.maxx = maxx;
        params.miny = miny;
        params.maxy = maxy;
      } else {
        //3D获取方式
        params.maxx = Cesium.Math.toDegrees(extend.east);
        params.maxy = Cesium.Math.toDegrees(extend.north);

        params.minx = Cesium.Math.toDegrees(extend.west);
        params.miny = Cesium.Math.toDegrees(extend.south);
      }
      return params;//返回屏幕所在经纬度范围
    }

Cesium:各种坐标转换 Cesium中各种坐标转换 阅读详情

相关推荐

2.(cesium篇)cesium接入百度地图

2.(cesium篇)cesium接入百度地图

地图之家 9970

CESIUM 获取当前视图范围

CESIUM 获取当前视图范围 点击跳转至原文 侵删 getPickRay方法 官方解释是: Create a ray from the camera position through the pixel at windowPosition in world coordinates. 大体意思是:能够通过屏幕坐标转换成经纬度坐标。屏幕坐标的话,我们可以通过div位置来获取,这样屏幕的左上角坐标和右下角坐标是可以很容易获取到的。 以下是获取左上角和右下角的详细代码: let pt1 = new Cesium.

albatorsss的博客 2079

CesiumJS【Basic】- #084 当前视图的经纬度范围

当前视图的经纬度范围

AlanL的专栏 263

Cesium最新基础教程系列5—鼠标事件获取当前坐标点(经度、维度、地形高度)

话不多说,直接上核心代码: var terrain = new Cesium.CesiumTerrainProvider({ url:"http://192.168.0.1:9000/MapData/Terrain/aa/" }); var handler = new Cesium.ScreenSpaceEventHandler(scene.canvas); handler.setIn...

李洋的专栏 1478

cesium 综合教程200+【目录】(已包含186篇文章)

cesium示例教程100+旨在为开发者提供简单快捷的,。在每一个示例中,解释相应的API知识点,做到。目录中有链接的为已有文章,没链接的为目标文章,不断更新中…

大剑师兰特的GIS世界 8889

Cesium中Billboard Label地面贴合与屏幕方向控制技术

本文还有配套的精品资源,点击获取 简介:Cesium是一个功能强大的开源JavaScript库,用于在Web浏览器中创建交互式3D地球模型。本文主要讨论如何在Cesium中实现Billboard和Label的地面贴合效果,以及如何控制它们不面向屏幕显示。文章详细描述了如何设置Billboard和Label的位置属性使其随地形变化,并展示了如何调整Label的垂直参考和偏移量...

weixin_35899324的博客 3581

Cesium 获取当前摄像机的位置 ,当前视线范围

var viewer = new Cesium.Viewer("cesiumContainer"); function getCenterPosition() { var result = viewer.camera.pickEllipsoid(new Cesium.Cartesian2(viewer.canvas.clientWidth / 2, viewer.canvas .clientHeight / 2)); var curPosition = Cesium...

yk583443123的博客 4959

Oracle EBS MRP 模块测试记录

MRP 模块测试记录        构思:创建Shirt成品物料,它由Cloth和Button组成。1*Shirt=1*Cloth+8*Button。        首先创建这三个物料(复制模板创建),并分配给T02。        创建BOM,将这三个物料关联起来。        分别创建资源(人工和设备)制造Cloth和Button。        分别创建两个部门(HumanDep和Mach

NetSuite 张老师 8164

Cesium获取当前视图范围四至坐标

在Cesium中 三维的视图范围可通过viewer.camera.computeViewRectangle()获取; 2维和2.5维需要camera.pickEllipsoid接口,将cesium场景绘图区屏幕坐标转化为世界坐标,只需要输入当前场景左上角屏幕坐标(0,0)和右下角屏幕坐标(canvas.width, canvas.height)即可获取对应的世界坐标值,然后再使用ellipsoid.cartesianToCartographic接口将世界坐标转化为经纬度坐标 const extend = v

ONEGISER的博客 5696

瑞芯微RK3506开发板Ethercat主站性能优化实战:从内核配置到微秒级延迟控制

本文详细介绍了在瑞芯微RK3506开发板上实现EtherCAT主站微秒级延迟控制的实战优化方案。核心在于部署Preempt-RT实时内核,并进行深度系统调优,包括CPU隔离、中断亲和性设置、内存锁定及电源管理调整。通过绕过Linux网络栈的专用驱动加载与配置,最终实现了稳定的高性能实时控制,满足工业自动化需求。

tcp8optimizer的博客 315

RK3566添加ffpeg【Buildroot系统】

有很多人都发现了RK3566系列的芯片是不可以直接使用ffmpeg官网源码的!会报错: Not a video capture device. /dev/video0: No such device 接下来我们就来解决这个问题!!

honmy18的博客 4068

Cesium——获取屏幕所在经纬度范围

【代码】Cesium——获取屏幕所在经纬度范围。

等花开一起压花路 1102

快速玩转 Llama2!机器学习 PAI 最佳实践(一)—低代码 Lora 微调及部署

本实践将采用阿里云机器学习平台PAI-快速开始模块针对 Llama-2-7b-chat 进行开发。PAI-快速开始支持基于开源模型的低代码训练、布署和推理全流程,适合想要快速开箱体验预训练模型的开发者。

阿里云云栖号 1763

Cesium 获取屏幕所在经纬度范围

Cesium 获取屏幕所在经纬度范围

qq_17627195的博客 1057

微波传感器 - 从原理到实战,解锁非接触感知新维度

本文深入解析微波传感器的工作原理,重点阐述了其基于多普勒效应的非接触感知机制,并对比了红外、超声波等技术的优劣。通过树莓派Pico与RCWL-0516模块的实战案例,展示了如何构建区域入侵检测器,并探讨了微波传感器在智能家居、工业自动化及汽车电子等领域的广阔应用前景。

weixin_29306571的博客 222

手把手教你学Simulink--基于Simulink的开关磁阻电机电流斩波控制仿真建模

特点:定子和转子均由普通硅钢片叠压而成,没有永磁体或绕组在转子上。工作原理:利用转子旋转时不同位置的磁阻变化产生转矩。控制挑战:由于SRM的高度非线性和磁饱和效应,需要复杂的控制算法来优化性能。利用Simscape Electrical中的模块构建SRM的物理模型,配置参数如电阻、电感等。matlab深色版本% 添加SRM电机模块根据实际需求调整电机参数。通过上述步骤,我们简要介绍了如何基于Simulink进行开关磁阻电机的电流斩波控制仿真建模。

MHD0815的博客 304

Cesium获取场景内鼠标点击的经纬度

** Cesium获取场景内鼠标点击的经纬度 ** Cesium获取场景内鼠标点击的经纬度: (一)首先我们要知道我们在Cesium获取的坐标有两种: 一种是笛卡尔3三维坐标类似于这种 Cartesian3:(-2223370.493219466, 5192279.252569285, 2952871.861093514) 一种是笛卡尔2二维屏幕坐标类似于这种 Cartesian2 :(x: 569.5592856186945, y: 571.9133071992151) 而我们想要的是这种格式

qq_32037427的博客 3602

【算法】克里金kriging参数值预测模型

模型中特征值2个,目标值1个,data数据集如图所示。搭建kriging参数值预测模型。

weixin_48618536的博客 5057

Cesium 获取当前场景坐标范围

getCesiumViewerExtend() { debugger; let params = {}; let extend = window.cesiumViewer.camera.computeViewRectangle(); if (typeof extend === "undefined") { //2D下会可能拾取不到坐标,extend返回undefined,所以做以下转换 let canvas = window.cesiumViewer.scene.c.

晚秋的专栏 1453

Deepseek Engram 论文全面解读

以下是对 DeepSeek 与北京大学于联合发布的论文《》(简称Engram 论文)的。

lpfasd123的博客 352

VC中sqlite的使用

在VC中对sqlite的使用,实现数据库大批数据的快速插入,读取数据库中的数据在ListCtrl中显示

cesium获取当前屏幕可视区域及level层

在查看cesium文档时,根本找不到对应的获取层级的api,因为在三维区域只能获取到相机的高度,为此通过相机高度计算level层。获取当前屏幕的可视区域的经纬度。

qq_43474235的博客 1927

Camera2Demo

在Camera2 的基础上进行封装,使得Camera2一堆初始化逻辑与Activity分离,降低耦合度,完成预览拍照并保存的操作

Cesium鼠标点击取经纬度:从屏幕坐标到地理坐标的完整指南

在三维GIS与Web GIS开发中,坐标拾取是高频且基础的能力。无论是地图打点、属性查询还是量算工具,核心都绕不开一个环节:如何将用户的屏幕点击位置精准转换为经纬度。这背后涉及屏幕坐标系、世界坐标系与地理坐标系之间的转换原理。Cesium作为主流三维地球引擎,提供了pickEllipsoid与pickPosition两条拾取路径,分别对应椭球面与场景真实表面,而3D Tiles、地形起伏、2D模式等因素都会影响拾取结果。理解坐标转换机制,掌握不同拾取API的适用场景,能有效避免选错层级、拿不到高度、2D下失

weixin_42526249的博客 257

IMSL CNL 7.0.0 (x86-64)Crack

IMSL CNL 7.0.0 (x86-64)Crack intel的算法库破解文件,这是C++版本的破解文件

VB摄像头监控

该VB模块可对摄像头捕获的画面进行录像等,可在创建的窗口进行控制

Cesium坐标及相互转换

目录 一、坐标系 1.1 WGS84坐标系(无实际对象) 1.2 WGS84弧度坐标系(Cartographic) 1.3 笛卡尔空间直角坐标系(Cartesian3)--世界坐标 1.4 平面坐标系(Cartesian2) 二、坐标转换 2.1 经纬度弧度 2.2 WGS84经纬度坐标-->WGS84弧度坐标系(Cartographic) 2.3 WGS84坐标系-->笛卡尔空间直角坐标系(Cartesian3) 2.4 笛卡尔空间直角坐标系(Cartesian3)--&g

爱晒太阳的风 3060

cesium入门笔记集合

一、认识Cesium 概念 Cesium 是一个跨平台、跨浏览器的展示三维地球和地图的 javascript 库; Cesium 使用WebGL 来进行硬件加速图形,使用时不需要任何插件支持,但是浏览器必须支持WebGL; Cesium是基于Apache2.0 许可的开源程序。它可以免费的用于商业和非商业用途。 作用 多种场景模式(3D,2.5D以及2D场景)的支持,真正的二三维一体化 可以...

呱呱的博客 5345

Cesium:地球中实现点击浮动弹窗

我也仅仅是一个Cesium的初学者,代码参考了小专栏里面的cesium 之自定义气泡窗口以及社区- Cesium中文网Cesium中级教程4 - 空间数据可视化的两篇文章写得. 其实如果不自己定义弹窗,直接在原生弹窗的description 里定义自己的窗口也是可以的,不过用起来不如自己定义一个方便,所以我就采用自己定义的,在需要的时候弹出自己的隐藏原生的窗口就可以了. 因为项目的原因,我只贴出来...

KaiSarH 8238

java3d点线面,Cesium中的地形和坐标转换说明

1 Cesium中的地形Cesium中的地形系统是一种由流式瓦片数据生成地形mesh的技术,厉害指出在于其可以自动模拟出地面、海洋的三维效果。创建地形图层的方式如下:var terrainProvider = new Cesium.CesiumTerrainProvider({url : 'https://assets.agi.com/stk-terrain/v1/tilesets/world/t...

weixin_42311000的博客 601
上一篇: JS进阶(2):人人都能懂的原型对象
下一篇: JavaScript用Math.asin()求反正弦值
jiechiyy
博客等级 码龄12年 89粉丝 73原创
评论
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

个

红包个数最小为10个

元

红包金额最低5元

当前余额3.43元 前往充值 >
需支付:10.00元
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付元
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值