Cesium 定位到图层(ImageryLayer)报错 DeveloperError: normalized result is not a number

  • 错误原因
  • 调试定位问题过程
  • 问题解决
  • 总结

在使用 Cesium 封装代码的时候,遇到个奇怪的问题。

使用 viewer.flyTo(ImageryLayer) 报错:DeveloperError: normalized result is not a number。

经过不断尝试发现,定位到某些 ImageryLayer 是没问题的,但是有的 ImageryLayer 就会报错。

但是使用 camera.flyTo 定位的话却能正常定位。

经过进一步确认发现,跟加载的 Terrain 有关系,后来终于解决问题,这里记录一下。

错误原因

现已确认,错误需要以下几个条件:

1. 开启地形,但是地形数据不完整。

拼接的地形数据,比如:Terrain 地形文件夹中,0-5 级是全国地形数据,6-8 级是北京市数据,而 layer.json 参数是 0-8 级。

2. 定位到 ImageryLayer 的 Rectangle

给 ImageryLayer 设置 Rectangle 参数,用于 viewer.flyTo 定位。

3. 定位到某些区域的时候会报错。

完整错误:

DeveloperError: normalized result is not a numberErrorat new DeveloperError (http://localhost:8009/lssec.js:83514:11)at Cartesian3.normalize (http://localhost:8009/lssec.js:69756:11)at Ellipsoid.geodeticSurfaceNormal (http://localhost:8009/lssec.js:87921:65)at Ellipsoid.cartesianToCartographic (http://localhost:8009/lssec.js:88014:18)at Array.createUpdate3D (http://localhost:8009/lssec.js:237640:30)at CameraFlightPath.createTween (http://localhost:8009/lssec.js:237932:39)at Camera.flyTo (http://localhost:8009/lssec.js:236172:86)at updateZoomTarget (http://localhost:8009/lssec.js:427653:14)at Viewer._postRender (http://localhost:8009/lssec.js:427539:3)at Event.raiseEvent (http://localhost:8009/lssec.js:92422:20)

调试定位问题过程

1. 首先通过错误定位到报错位置。

2. 找到 viewer.flyTo 方法,调试查看,这里发现定位其实是计算 Rectangle,然后在进行定位。

初步有了解决思路,继续调试。

3. 这里可以发现,viewer.flyTo 跟 terrainProvider 是有关系的,因此确定是 Terrain 地形数据资源的问题。

问题解决

解决问题的方式有两种,一是使用完整的 Terrain 地形数据,不会报错;二是修改定位的方式,可以避免错误。

1. 使用完整 terrain 地形数据

很简单,不要拼接即可,也就是使用工具切割的 Terrain 地形数据目录是什么样就直接使用,不能对 Terrain 目录做任何修改

2. 使用其他方式定位

在查看 API 的时候,发现 ImageryLayer 有这样一个方式,大概意思是获取 Rectangle 之后,使用 camera 进行定位

经过尝试,没问题,不会报错。

总结

广大 GISer 除了关注这个问题,以及解决方法,还可以关注一下笔者的调试过程。

另外,经过确认,这个问题是 Cesium 的 bug,笔者已经在 githup 上提交了,感兴趣的可以看看。

这里是 Cesium 的错误调试:viewer.flyTo 问题

Cesium 定位到图层(ImageryLayer)报错 DeveloperError: normalized result is not a number相关推荐

  1. cesium 地图无法加载 报错401 缺少token

    cesium 地图无法加载 报错401 缺少token 首先,报错401 说明用户没有访问权限,需要进行身份认证,也就是cesium需要密钥,也是最近实行的吧,因为之前不用也能加载出地图. token ...

  2. python解码bash64报错:binascii.Error: Invalid base64-encoded string: number of data characters (7121) can

    文章目录 报错信息 产生过程 问题产生原因(失败,报错不是这个问题) 20230223 问题产生原因2:base64编码数据是错误的 报错信息 binascii.Error: Invalid base ...

  3. leaflet 鼠标移动到图层时变_leaflet 图层切换报错

    let onlinemapArr=L.layerGroup([this.$refs.gis.onLineMap,this.fireLayer]) let outlinemapArr=L.layerGr ...

  4. 使用pymysql报错:pymysql.err.InternalError: Packet sequence number wrong - got 5 expected 1

    环境:Python 3.8.5 在使用pymysql去数据库查询数据时,出现了如下错误: Exception ignored in: <function MysqlPoolClient.__de ...

  5. pymysql.cursors.SSCursor 报错 Previous unbuffered result was left incomplete

    读取大数据量时,使用 SSCursor (流式游标) 解决 Python 使用 pymysql 查询大量数据导致内存使用过高的问题 如果用传统的 fetchall() 或 fetchone() 方法, ...

  6. 存储过程报错ERROR 117242000 - Result consisted of more than one row

    今天在学习sql函数时候遇到以下问题: 参考: 一开始总是在纠结是不是存储过程哪里写错了,最后却发现数据表被人动过,插入了重复的记录,所以在select into 的时候会报错.自己也反应也忒慢了,竟 ...

  7. Mysql报错:1172 - Result consisted of more than one row

    执行mysql函数时报错:1172 - Result consisted of more than one row 函数语句中select into语句中WHERE account = userNam ...

  8. npm运行报错:Error: ENOSPC: System limit for number of file watchers reached

    原因 查了一下,是linux系统的限制导致这个报错了,需要设置一下:fs.inotify.max_user_watches 这个参数. 解决方法 执行:vim /etc/sysctl.conf,添加如 ...

  9. reactjs npm start运行报错:Error: ENOSPC: System limit for number of file watchers reached

    **解决方法**执行:vim /etc/sysctl.conf,添加如下内容:fs.inotify.max_user_watches=524288输入:wq在命令行执行:sysctl -p重新执行:n ...

最新文章

  1. AMD真龙一族网络社区成立
  2. Windows 7键盘失灵导致无法输入登录密码问题解决方案
  3. 表格排序tablesort小案列
  4. Java springcloud B2B2C o2o多用户商城 springcloud架构 (十七)上传文件
  5. linux安装perl编译环境,CentOS7 安装 perl 环境
  6. 虚拟机建立快照_使用qmeu-img创建虚拟机(创建虚拟机,虚拟机快照)
  7. html出现403错误信息,网站(HTTP)出现403错误集锦,请对号入座;
  8. “9元课程”拼凑起来的暑假和K12在线教育企业的生死营销战
  9. SSM整合项目实践——完成图书的CRUD
  10. jQuery - 按回车键触发跳转
  11. mysql5.6免安装版配置
  12. RFID:ISO14443、15693、18000体系分析
  13. html5 下拉按钮样式修改,css和jquery实现的select美化自定义下拉框样式
  14. 常用第三方APP 的url scheme
  15. 【数据结构笔记】将两个递增的有序链表合并为一个递增的有序链表
  16. 码农的自我修养 - 关于ARM你需要知道的
  17. 小型电子管通用计算机103机,中国第一台电脑
  18. 上海相会 | 冒志鸿与丁磊畅谈ArcBlock未来宏图
  19. 淘宝等各平台API接口,执行item_get - 获得商品详情信息
  20. PHP导出Excel时数据量过大的问题

热门文章

  1. 逃逸闭包(@escaping)和非逃逸闭包
  2. html 上下广告悬浮,JS上下自动漂浮广告,可关闭
  3. Visual Studio2017安装和使用教程(详细)
  4. java行业前景_java开发行业前景
  5. 华硕无畏灵耀破晓原装Windows10/11系统
  6. 纹波测量 以及 ATX 12V PC 电源 介绍
  7. BitMap的recycle问题
  8. 台式计算机运行慢怎么样能提高速度,旧电脑配置低,如何提升性能、加快运行速度?...
  9. R绘图实战|GSEA富集分析图
  10. 初用网易蜂巢遇到的问题