Cesium视角监听回调,获取中心点坐标、高度、当前可视区域范围

Cesium 获取当前视角信息 通过 `浏览器控制台`,直接获取到当前地球视角的信息,然后通过 `flyTo` 跳转视角。 阅读详情

 

    var token = "0b018552994f71a9467d24461a8f8238";
    var viewer = new Cesium.Viewer('cesiumContainer', {
      animation: false, //是否创建动画小器件,左下角仪表
      baseLayerPicker: false, //是否显示图层选择器
      fullscreenButton: false, //是否显示全屏按钮
      geocoder: false, //是否显示geocoder小器件,右上角查询按钮  
      homeButton: false, //是否显示Home按钮
      infoBox: false, //是否显示信息框
      sceneModePicker: false, //是否显示3D/2D选择器
      selectionIndicator: false, //是否显示选取指示器组件
      timeline: false, //是否显示时间轴
      navigationHelpButton: false, //是否显示右上角的帮助按钮
      scene3DOnly: true, //如果设置为true,则所有几何图形以3D模式绘制以节约GPU资源
      imageryProvider: new Cesium.WebMapTileServiceImageryProvider({
        url: "http://t0.tianditu.gov.cn/img_w/wmts?service=wmts&request=GetTile&version=1.0.0&LAYER=img&tileMatrixSet=w&TileMatrix={TileMatrix}&TileRow={TileRow}&TileCol={TileCol}&style=default&format=tiles&tk=" +
          token,
        layer: "tdtImgBasicLayer",
        style: "default",
        format: "image/jpeg",
        show: false
      })
    });
    viewer.imageryLayers.addImageryProvider(new Cesium.WebMapTileServiceImageryProvider({
      url: "http://t0.tianditu.gov.cn/cia_w/wmts?service=wmts&request=GetTile&version=1.0.0&LAYER=cia&tileMatrixSet=w&TileMatrix={TileMatrix}&TileRow={TileRow}&TileCol={TileCol}&style=default&format=tiles&tk=" +
        token,
      layer: "tdtImgAnnoLayer",
      style: "default",
      format: "image/jpeg",
      tileMatrixSetID: "GoogleMapsCompatible",
      show: false
    }));
 
    /* 三维球转动添加监听事件 */
    viewer.camera.changed.addEventListener(function (percentage) {
        getCenterPosition();
        getCurrentExtent();
        // 打印中心点坐标、高度、当前范围坐标
        console.log(getCenterPosition());
        console.log("bounds",getCurrentExtent());
    });
 
    /* 获取camera高度  */
    function getHeight() {
      if (viewer) {
        var scene = viewer.scene;
        var ellipsoid = scene.globe.ellipsoid;
        var height = ellipsoid.cartesianToCartographic(viewer.camera.position).height;
        return height;
      }
    }
 
    /* 获取camera中心点坐标 */
    function getCenterPosition() {
      var result = viewer.camera.pickEllipsoid(new Cesium.Cartesian2(viewer.canvas.clientWidth / 2, viewer.canvas
        .clientHeight / 2));
      var curPosition = Cesium.Ellipsoid.WGS84.cartesianToCartographic(result);
      var lon = curPosition.longitude * 180 / Math.PI;
      var lat = curPosition.latitude * 180 / Math.PI;
      var height = getHeight();
      return {
        lon: lon,
        lat: lat,
        height: height
      };
    }
 
    function getCurrentExtent() {
        // 范围对象
        var extent = {};
 
        // 得到当前三维场景
        var scene = viewer.scene;
 
        // 得到当前三维场景的椭球体
        var ellipsoid = scene.globe.ellipsoid;
        var canvas = scene.canvas;
 
        // canvas左上角
        var car3_lt = viewer.camera.pickEllipsoid(new Cesium.Cartesian2(0, 0), ellipsoid);
 
        // canvas右下角
        var car3_rb = viewer.camera.pickEllipsoid(new Cesium.Cartesian2(canvas.width, canvas.height), ellipsoid);
 
        // 当canvas左上角和右下角全部在椭球体上
        if (car3_lt && car3_rb) {
            var carto_lt = ellipsoid.cartesianToCartographic(car3_lt);
            var carto_rb = ellipsoid.cartesianToCartographic(car3_rb);
            extent.xmin = Cesium.Math.toDegrees(carto_lt.longitude);
            extent.ymax = Cesium.Math.toDegrees(carto_lt.latitude);
            extent.xmax = Cesium.Math.toDegrees(carto_rb.longitude);
            extent.ymin = Cesium.Math.toDegrees(carto_rb.latitude);
        }
 
        // 当canvas左上角不在但右下角在椭球体上
        else if (!car3_lt && car3_rb) {
            var car3_lt2 = null;
            var yIndex = 0;
            do {
                // 这里每次10像素递加,一是10像素相差不大,二是为了提高程序运行效率
                yIndex <= canvas.height ? yIndex += 10 : canvas.height;
                car3_lt2 = viewer.camera.pickEllipsoid(new Cesium.Cartesian2(0, yIndex), ellipsoid);
            } while (!car3_lt2);
            var carto_lt2 = ellipsoid.cartesianToCartographic(car3_lt2);
            var carto_rb2 = ellipsoid.cartesianToCartographic(car3_rb);
            extent.xmin = Cesium.Math.toDegrees(carto_lt2.longitude);
            extent.ymax = Cesium.Math.toDegrees(carto_lt2.latitude);
            extent.xmax = Cesium.Math.toDegrees(carto_rb2.longitude);
            extent.ymin = Cesium.Math.toDegrees(carto_rb2.latitude);
        }
 
        // 获取高度
        extent.height = Math.ceil(viewer.camera.positionCartographic.height);
        return extent;
    }

 

Cesium 点击获取模型表面经纬度高程坐标(三维坐标) 下面代码适用于 模型表面 三维坐标。注意: 说明一下:viewer.scene.pickPosition(e.position)在没有3dTile模型下的笛卡尔坐标不准问题,可以通过开启深度检测解决 viewer.scene.pick: 返回中指定位置的顶端的primitive属性的一个对象。适用于选取3dTile,改变3dTile的属性(例如颜色)。viewer.scene.pickPosition: 返回一个被屏幕坐标和深度缓存指定的点。适用于模型表面位置的选取,通俗的说就是camera看过去第一个被挡 阅读详情

相关推荐

UE5、CesiumForUnreal接入WMTS格式地图瓦片,如ArcGIS、Mapbox、天地图

UE5、CesiumForUnreal加载WMTS格式地图瓦片,如ArcGIS、Mapbox、天地图

专注GIS开发 9933

cesium 添加监听事件、获取中心点坐标、高度、当前可视化区域范围

<!DOCTYPE html> <html lang="en"> <head> <!-- Use correct character set. --> <meta charset="utf-8"> <!-- Tell IE to use the latest, best version. --> <m...

qq_34870529的博客 8153

《R语言实战》第八章之回归分析图形

回归分析图形 回归分析分为简单回归与复杂回归 1 : 简单线性回归即:模型中只包含一个因变量和一个自变量,有时候也会包含多项式, 这个图形描述了身高与体重的线性关系,这也是一个多项式图形 2:当我们的预测变量(自变量)不止一个时,就属于多元线性回归,而且多元线性回归中也可以包含多项式以及交互项 (1)在进行多远回归分析之前可以先描述变量之间的相关关系 上图为一个散点图矩阵,描述了五个变量之间的相关关系,我们可以通过非主对角线的散点图来查看两个变量之间的关系。 多元线性回归简单地就是OLS回归,通过lm和

Strawberry_Ya的博客 1833

cesium-事件监听(获取点击位置的经纬度和高度)

cesium-事件监听(获取点击位置的经纬度和高度) 介绍 let handler = new Cesium.ScreenSpaceEventHandler(element); 处理用户输入事件。可以添加自定义功能以在用户输入时执行。 成员 Cesium.ScreenSpaceEventHandler.mouseEmulationIgnoreMilliseconds=800 接收到任何触摸事件后鼠标事件将被禁用的时间量(以毫秒为单位),这样任何模拟的鼠标事件都将被忽略。 Cesium.ScreenSpa

孙霸天的专栏 3612

Android应用隐私合规自动化检测:Frida与Camille实战指南

在移动应用安全与隐私合规领域,动态代码插桩技术已成为核心检测手段。其原理是通过运行时注入,实时监控和修改应用行为,从而绕过传统静态分析的局限。这项技术的核心价值在于能够精准捕获应用在运行时的敏感数据调用与网络传输行为,为隐私合规审计、安全测试提供直接证据。在实际应用场景中,它尤其适用于自动化检测违规收集个人信息、追踪数据流向等任务。本文聚焦于利用Frida这一动态插桩框架,结合Camille隐私合规检测工具集,构建自动化监控环境。通过注入JavaScript代码,实现对Android敏感API(如获取设备标

weixin_34254464的博客 388

HLM(多层线性模型)在stata中语句

在阅读CEPS中发现有些研究采用的是HLM模型,HLM简单来说用一个方程跑两个回归。举例,对学习成绩影响因素,不同层有不同的影响,如在个体层面上个体特征会对成绩产生影响,在学校层面学校排名等因素会对成绩产生影响,两种因素不在一个层面,每层造成的差异都不相同。 在找相关语句时候发现操作这个语句的软件大多是SPSS和HLM,对于stata操作者并不友好。因此,在有限资料中总结了HLM在stata中的语句,后面会附上学习视频和链接。 先放语句,后面对方程式一个大致解析。由于针对HLM有一本书的介绍,可能一篇文章无

weixin_44652251的博客 1万+

Cesium 获取当前视图的中心经纬度

背景: 需要进行设置不同的视角高度,刚开始获取的相机高度发现相机位置和当前的位置不匹配,差异很大 可能是因为我是2d模式下的,相机位置超出了范围。 解决办法: 获取当前的视角中心点(经纬度) var result = window.viewer.camera.pickEllipsoid( new Cesium.Cartesian2( window.viewer.canvas.clientWidth / 2, window.viewer.can.

西柚2015地信小白GISer 3277

[AHK]获取通达信软件上的股票代码

PC上的股票交易软件的自动止损、自动下单等功能比较弱,不如期货交易软件。 自力更生,程序员都是自己打造工具。 根据IPO模型(Input 输入,Process处理,Output输出),为了方便自动化首先要获取当前交易软件上浏览的股票代码。 截图再OCR显然太麻烦,通过Winspy工具查看下交易软件自带功能的消息号(33780),大家记住这个号码! 下面在用AutoHotkey作为变成语...

liuyukuan的专栏 1万+

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

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

ONEGISER的博客 5696

YOLOv11改进策略【注意力机制篇】| 2024 蒙特卡罗注意力(MCAttn)模块,提高小目标的关注度

本文记录的是基于蒙特卡罗注意力(MCAttn)模块的YOLOv11目标检测改进方法研究。利用提高的跨尺度特征提取能力,使模型能够更好地传递和融合提取的多尺度特征,提高对小目标的关注度。Exploiting Scale-Variant Attention for Segmenting Small Medical Objects使用一种基于随机采样的池化操作来生成尺度无关的注意力图。它从三个不同尺度(3×33×33×3、2×22×22×2和1×11×11×1,即池化张量)中随机选择一个1×11×11×1注意力图

Limiiiing的博客 3600

看完就会!手把手教您如何正确开启飞牛Nas 虚拟机的 IOMMU 硬件直通,让虚拟机的性能飙升!

看完就会!手把手教您如何正确开启飞牛Nas 虚拟机的 IOMMU 硬件直通,让虚拟机的性能飙升!

XiaoqiangClub的博客 1万+

Cesium获取当前相机位置及视角

场景视角调整为我们想要的视角,输入以下命令,即可获取到相关位置信息。-

dyh17630178424的博客 2073

使用Simulink设计并实现一个可调谐的二阶IIR陷波滤波器,实时去除音频中的工频噪声

《基于Simulink的音频陷波滤波器设计与实现》摘要:本文详细介绍了使用Simulink设计陷波滤波器去除音频工频噪声(如50Hz)的方法。核心内容包括:1)二阶IIR陷波滤波器的原理与传递函数;2)Simulink实现步骤(音频系统搭建、滤波器设计、频率跟踪);3)性能分析(频谱对比、时域波形、听觉测试)。通过精准消除特定频率干扰,同时保留语音信号(200Hz-4kHz),有效提升信噪比(>20dB)。文章还探讨了多陷波级联、自适应算法等高级技巧,为音频处理、语音通信等应用提供实用解决方案。

amy_mhd的博客 154

cesium获取当前视角参数

获取当前屏幕中心的经纬度坐标、笛卡尔坐标、heading、pitch、roll参数。

zxl9669的博客 1440

YOLO模型部署RK3588多核NPU并行加速完整教程:基于线程池的高性能AI推理实现

本教程详细介绍了如何在RK3588平台上实现多核NPU并行加速的AI推理方案。RK3588搭载3个独立NPU核心,总算力达6TOPS,支持单核、双核和三核三种工作模式。文章深入解析了NPU硬件架构特点,包括核心独立处理能力、内存带宽分配及多核心协作机制,并提供了C++代码示例展示核心负载均衡、任务调度和内存优化策略。通过线程池技术可以有效利用多核NPU并行计算能力,显著提升AI推理性能,特别适合高并发场景。教程还包含内存子系统的瓶颈分析和性能预估方法,为开发者提供完整的优化思路。

LXY_LOVE36的博客 795

大中型超市收银系统(可直接运行)

光步前台收银系统系统功能:商品销售、商品退货、挂单、收银员权限、会员销售、单品取消、整单取消、商品查询、脱机销售、脱机数据上传,基本资料下载,开钱箱、小票打印、收款结算,支持多币种付款方式(现金、储值卡、礼券、微信等),支持多种促销。运行环境:.net 4.0登陆信息用户名:1001 密码:123456内置商品信息,商品编码可输入00001000 - 00010000,测试效果相关功能键F5 结算 F9挂单 F11商品查询 F8退货 Insert单品取消 Del整单取消 F12开钱箱F2 会员 Ctrl+Z退出系统 Home 锁屏 相关源码待公开

cesium屏幕空间监听事件

本文主要解析了ScreenSpaceEventHandler类,并实现了屏幕空间事件的监听。部分内容参考了文章:cesium-事件监听(获取点击位置的经纬度和高度)。添加了部分ts的代码,和对回调函数参数的解析,这些参数一般是屏幕的坐标,通过坐标转换后可以向cesium球体上增加元素,可以实现点击添加点、移动物体等复杂的操作。

tjx1997的博客 2081

STM32F407中文手册

STM32f407中文手册 本参考手册面向应用开发人员,提供有关使用 STM32F405xx/07xx、STM32F415xx/17xx、 STM32F42xxx 和 STM32F43xxx 微控制器存储器与外设的完整信息。STM32F405xx/07xx、STM32F415xx/17xx、STM32F42xxx 和 STM32F43xxx 构成一个微 控制器系列,各产品具有不同的存储器大小、封装和外设。有关订购信息以及器件的机械与电气特性,请参见数据手册。有关 ARM Cortex™-M4F 内核的信息,请参见《Cortex™-M4F 技术参考手册》。

cuisum:camera控制介绍,设置显示范围和角度

目录 一、参数介绍 heading pitch roll 二、操作定位 1、setView方法 (1)Cartesian3 (2)rectangle 2、flyTo方法 3、lookAt方法 cesium提供了三种方式,可以对camera进行操作,这三种方式,有三个共同的参数,heading,pitch,roll,那么,这三个参数分别是什么。 一、参数介绍 heading 作用:设置头朝东南西北四个方向看 弧度制, 北(0.0),东(90度的弧度),南(180度的弧度),西(.

happy81997的博客 5077

OV9734 DATASHEET,完整规格书

OV9734完整规格书,包括电气参数,尺寸规格,寄存器配置表等

Cesium 指定显示区域部分(不让显示整个地球)

Cesium 指定显示区域部分(不让显示整个地球)

piaomiaozaitianya的博客 7666

cesium地图级别与相机高度换算

cesium地图级别与相机高度换算

cyrna的博客 1401

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

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

qq_43474235的博客 1927

Cesium 笔记 js Cesium 返回范围的数据

由于刚接触Cesium,在加载的3DTitles数据中没有属性数据,所有需要读shp中的属性,用来进行接下来的分析功能,但是由于数据量太大,直接读取会造成内存过溢,浏览器崩掉,所以,在学长的帮助下,提议将shp数据发布服务,进行分析时(例如管线的爆管分析),点击某个管线时,获取点击的坐标,然后定义一个Geometry extent范围,查询定义的范围内的数据,来进行各种分析功能。 首先根据点击的管线,可以得到屏幕坐标,将屏幕坐标转成84坐标,可以以这个点的坐标为中心定义范围,从而查询数据 var ca

qq_40216244的博客 731

Cesium常用得指令代码(禁止缩放,关闭光源,监听事件等)

最近在做Cesium项目经常会遇到(禁止缩放,关闭光源,关闭阴影等效果)所以决定做个总结。 一、总结 1.Cesium关闭光源于阴影 // viewer.scene.globe.enableLighting = false; //关闭光照 // viewer.shadows = false;//关闭阴影 2.禁止缩放 //viewer.scene.screenSpace...

从事前端,不断积累经验,学习新的技术。头像不是本人是莉莉崽(美貌、可爱集于一身的小姐姐,小仙女),一个宝藏博主,值得喜欢! 7327

Cesium 测距、测面功能实现

Cesium 测距、测面功能实现

GIS(地理信息系统) 4405

Cesium 获取当前场景坐标范围

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

晚秋的专栏 1454

Cesium 获取当前相机视角方法

Cesium 获取当前相机位置和姿态

qq_45120080的博客 2849

cesium 切换瓦片地图的加载方式

cesium 切换瓦片地图的加载方式 如果你熟悉 cesium,那么你或多或少应该用过或者了解如何用 cesium 加载瓦片地图。 熟悉加载瓦片地图这本身不是一个太难的工作,一般来说,只要你照着官方的沙盒中的示例,一般都能轻松掌握。 但是问题是,只要你细心研究过,你就会发现,cesium 加载瓦片地图,居然是用 ajax 请求的方式来加载贴图的。 这种加载方式的优劣我们姑且不论,cesium 选择这种方式必然会有其意义所在。 但是问题是,为什么翻遍 api 和源码,都没有找到一个方式,可以更换贴图的加载方

纯爱枫若情的博客 4808
上一篇: 基于云计算构建开源GIS方案
下一篇: 解决webstorm中因加载node_modules而很卡的问题
engineer_he
博客等级 码龄10年 109粉丝 14原创
评论 3
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

个

红包个数最小为10个

元

红包金额最低5元

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

抵扣说明:

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

余额充值