问题标签 [cesium]
For questions regarding programming in ECMAScript (JavaScript/JS) and its various dialects/implementations (excluding ActionScript). Note JavaScript is NOT the same as Java! Please include all relevant tags on your question; e.g., [node.js], [jquery], [json], [reactjs], [angular], [ember.js], [vue.js], [typescript], [svelte], etc.
cesium - 铯的相对高度
编辑:刚刚意识到我传递了一个坐标,而它需要一个数组。将检查和更新。
需要将模型放置在地面(水)上。
据我了解,相对高度(如relativeToGround
在 KML 中)尚未实现。因此,目前最好的解决方案是向地形提供者询问某个位置的地形高度,并相应地调整模型的高度 [ 1 ](然后以某种方式处理细节级别的变化)。
这是Sandcastle的简单示例。我只是试图获得一个位置的高度。我希望Cesium.sampleTerrain
返回一个promise
比将Cartographic
其height
修改为该位置的地形高度来解决的问题。但它只是立即(同步?)解决未修改的输入(height == 100
)。
- 代码有什么问题?
- 有没有替代方法?
谢谢你。
streaming - cesium 中 CZML 数据包的实时流式处理和处理
嗨,每当我从服务器发送具有新更新的笛卡尔坐标的对象的新 czml 数据包以及纪元时间和经过的秒数时,如何在 java 脚本中流式传输实时 czml 数据包和处理而不使 UI 冻结并且不从一开始就启动场景time ,整个场景在处理完数据包后会从头开始。那么如何避免场景重启。基本上我希望场景中的对象实时移动,其中实时笛卡尔坐标是从服务器提供的。
javascript - 将卫星轨道添加到 WebGLEarth 地图(例如 Leafletjs 或 Cesiumjs)
我在 WebGLEarth ( http://www.webgearth.org/api )中制作了一张带有许多可点击标记(带有弹出窗口)的地图,我希望在我的全球范围内拥有三个卫星轨道。重要的是你清楚地看到它是一颗悬停在某个地方的卫星(在哪里并不重要,它不必移动)。所以,像https://cesiumjs.org/Cesium/Apps/Sandcastle/index.html?src=CZML.html&label=Showcases
但是,WebGLEarth 不包含执行此操作的工具。添加多边形将不起作用(猜想这是一个错误),并且线还不包括在内。将标记更改为另一个图标也不起作用,因为只有一个标准标记(据我所知)。有一个请求让 webgearth 成为一个合适的 Leafletjs 插件,但当然,我现在想制作我的地图。
有人知道如何做到这一点?也许是关于如何将 WebGLEarth 与 Cesiumjs 或 Leafletjs 结合起来的提示?提前致谢!
cesium - Get ground altitude CesiumJS
Is there any way to get ground altitude for a given position in CesiumJS? I tried scene.globe.getHeight func but it returns undefined.
Thank you.
javascript - 如何在铯中将x、y、z转换为经度、纬度、高度?
使用 three.js 库,我组装了一个设计(工厂)。该设计包含许多较小的模型,这些模型具有从原点 (0,0,0) 在 (x, y, z) 中的位置参考。在以下链接中附加了示例屏幕截图
现在我想将具有自己位置的单个模型加载到 Cesium 中。当我尝试加载将位置 (x, y, z) 直接转换为 (north, east, up) 时,结果与预期不符。所有的模型都是分散的。
我要实现的功能是,基于某个原点(lon,lat,alt)点,我应该将模型定位到铯中,参考相对于铯坐标(lon,lat,alt)的(x,y,z) )
例如
原点地理坐标 (ori_lon, ori_lat, ori_alt) => (-106.690647, 36.806761, 0)
模型坐标 (m_x, m_y, m_z) => (-150.9, 126.26, 217.7)
铯的期望坐标:(ori_lon + m_x,ori_lat + m_y,ori_alt + m_z)
或一些算法来实现这一点。
我尝试使用以下文章将 (x, y, z) 转换为具有某些来源 (long, lat, alt) 的 (long, lat, alt),但没有运气:(
建议/帮助解决问题。
javascript - 在 Cesium 中实现渐进式渲染层
我正在尝试实现一个显示服务器发送的栅格数据的图层。服务器协议发送的数据在广泛使用的浏览器中没有内置支持(这是一个jpeg2000数据)。因此,我正在自己解码数据并让它给 Cesium 显示。
是什么让它有点复杂:
服务器是有状态的,因此客户端和服务器都应该维护一个通道。该通道与单个感兴趣区域相关联。区域可能会随着时间而改变,但在每个时间点,只有一个区域供服务器在通道上发送数据。我可以在会话中使用一些频道,但是服务器在频道数量非常少的情况下表现不佳。
感兴趣的区域具有统一的分辨率(因此对于 3D 来说是有问题的)。
服务器支持逐步发送数据逐渐提高质量(jpeg2000 中的“质量层”),由于可用的网络资源非常少,我想使用这个属性。
就 CPU 时间而言,解码很繁重。
作为第一阶段,我实现了一个 ImageryProvider,它只是为渲染引擎请求的每个图块创建一个通道。它工作但创建了太多的连接,我不喜欢渐进式渲染。此外,性能很差,这个问题几乎可以通过实施优先机制来解决,该机制首先在 Cesium 查看器的视图区域中解码图块。
接下来我实现了一个自渲染光栅“层”,它根据视图区域改变通道的感兴趣区域。然后多通道问题得到解决,我享受渐进式渲染。但是我遇到了以下问题:
一个。我用来显示解码像素的方法是实现一个图像提供程序,它显示带有解码像素的单个 Canvas。每次更新图像(重新定位或逐步解码)时,我都必须删除旧的图像提供程序并用新的图像提供程序替换它。我想这不是做这些事情的正确方法,它可能会导致一些不良行为,例如在用新的提供者替换旧提供者时出现错误的 z 顺序等。其中一些问题可以通过使用带有图像材料的原语来解决,但是我必须使用图像的数据 URL 形式。这样做会降低性能,因为它会导致大量从画布到数据 URL 的转换。
湾。我必须编写特殊代码来理解视图区域,以便将其发送到服务器(使用 pickEllipsoid 和类似功能)。我猜这段代码是在 Cesium 引擎中完成的东西的重复。此外,我在一些讨论中看到 2D 不支持 pickEllipsoid。一般来说,我很高兴有一个为我计算视图区域的函数,而不是自己实现该代码。
C。我实现它的方式引发了一个 API 问题:与添加和删除图像提供程序(addImageryProvider() 方法和 removeLayer() )的 Cesium 的漂亮 API 不同,在我的实现中,用户只需要使用我向他公开的方法(例如,接受 Viewer 作为参数的方法 add())。
d。在 3D 模式下,当分辨率不均匀时,图像在近距离区域不清晰。我知道这是一个固有的问题,因为我的服务器的工作方式,只是指出来。
我认为我在这里真正缺少的是一种实现插件的方法,它比 ImageryProvider 的接口更强大:实现一个自渲染光栅层,它从渲染引擎接收视图区域更改事件,并可以决定何时以及如何刷新它的瓷砖。另一种选择(这对我来说甚至更好,但我猜其他人不太可重用)是将视图区域中的图块列表公开给 ImageryProvider 实现。
应对这种情况的正确方法是什么?
web - 如何在 Cesium 中显示带有纹理的 3D 建筑物?
我正在研究市区的 3D web-GIS。3D 建筑物(带有纹理)是在 Arcgis 中创建的,我正在寻找在网络上显示此 3D 模型的最佳解决方案。我尝试了 Cesium,但无法将 KML 文件转换为 CZML。我应该怎么做才能将 KML 转换为 CZML?是否有任何其他解决方案可以在 Web 上显示 3D 构建
javascript - Cesium - 将 scaleByDistance 用于通过 CZML 创建的广告牌
我正在尝试将图标显示为广告牌并按距离缩放。我可以管理得很好,但是一旦我通过 CZML 而不是直接在 JS 中加载广告牌,我就无法调整广告牌的大小。
在我的 JS 文件中,我有:
我的 CZML 文件显示:
在我使用这个之前:
显然现在这行不通。但我找不到一种方法来获取广告牌的 ID 并使用 scaleByDistance。
cesium - Cesium:CZML 的流式传输示例
看起来这个问题之前已经被问过,但我一直找不到合适的例子。我熟悉 PHP,但对 Javascript 不熟悉,无法弄清楚如何流式传输 CZML。
我想在地图上显示大约 6.500 个资产。为了防止网页在加载完所有内容后显示(并测试用户的耐心),我希望它显示然后在后台加载资产。
有人可以指点我一个如何做到这一点的例子吗?我可以设法像这样加载 czml 文件:
但这就是我所得到的:-(我知道我应该在某个地方使用 .processUrl 并且我知道我应该在 CZML 文件中使用不同的数据包,所以我的 CZML 文件如下所示:
如果有人可以提供一个工作示例,那就太好了,一个 .czml 文件和一个 .js 文件。谢谢!
javascript - 如何设置默认视图位置 (Cesium 1.6)
我想为 cesium 应用程序设置默认视图/主页位置。
我不只是想飞到那个位置一次;我希望将位置设置为默认/主页 - 以便它可以在应用程序的其他地方使用 - 例如在HomeButton小部件中。
我试过这样设置Camera.DEFAULT_VIEW_RECTANGLE
(docs here):
但它不起作用..
为了完整起见,这是我初始化应用程序的方式:
有什么建议么?如果需要任何进一步的信息,请告诉我。