gpt4 book ai didi

javascript - 实体未出现在 CesiumJS 中

转载 作者:行者123 更新时间:2023-11-28 04:31:43 24 4
gpt4 key购买 nike

我想在 Cesium 中可视化一些 3D 数据点,但不想设置服务器。我下载了 Cesium-1.34.zip 并将其解压到桌面上。然后,我制作了一个 .html 文件,该文件也位于我的桌面上,并从 Cesium-1.34 解压缩文件夹中提取资源。我包含了来自 http://cesiumjs.org/Cesium/Apps/Sandcastle/index.html?src=PolylineVolume.html&label=Geometries 的一些示例代码来测试一下。我的完整代码如下:

<!DOCTYPE html>
<html lang="en">
<head>
<meta charset="utf-8">
<meta http-equiv="X-UA-Compatible" content="IE=edge">
<meta name="viewport" content="width=device-width, initial-scale=1,
maximum-scale=1, minimum-scale=1, user-scalable=no">
<title>Hello World!</title>
<script src="Cesium-1.34/Build/Cesium/Cesium.js"></script>
<style>
@import url(Cesium-1.34/Apps/Sandcastle/templates/bucket.css);
@import url(Cesium-1.34/Build/Cesium/Widgets/widgets.css);
html, body, #cesiumContainer {
width: 100%; height: 100%; margin: 0; padding: 0; overflow: hidden;
}
</style>
</head>
<body>

<div class="fullSize" id="cesiumContainer"></div>
<div id="loadingOverlay"><h1>Loading...</h1></div>
<div id="toolbar"></div>

<script>



var viewer = new Cesium.Viewer('cesiumContainer', {
baseLayerPicker: false,
imageryProvider: new Cesium.BingMapsImageryProvider({
url : 'http://dev.virtualearth.net',
key : 'al3lvBftgu3T17GnraSB~sDScxf9wA4dopWEvK2swfA~AlwqHWs4LzhiC2oOHAFYe9dZMVQtYCQHRGyC8Y6Hyq9-109ibBI9suhwFj0RoRAp'
})
});

var greenBox1 = viewer.entities.add({
name : 'Green box with beveled corners and outline',
polylineVolume : {
positions : Cesium.Cartesian3.fromDegreesArrayHeights([-90.0, 32.0, 0.0,
-90.0, 36.0, 100000.0,
-94.0, 36.0, 0.0]),
shape :[new Cesium.Cartesian2(-50000, -50000),
new Cesium.Cartesian2(50000, -50000),
new Cesium.Cartesian2(50000, 50000),
new Cesium.Cartesian2(-50000, 50000)],
cornerType : Cesium.CornerType.BEVELED,
material : Cesium.Color.GREEN.withAlpha(0.5),
outline : true,
outlineColor : Cesium.Color.BLACK
}
});

viewer.zoomTo(viewer.entities);

</script>
</body>
</html>

问题是地球仪上应该出现的绿框不存在。我没有从“开发人员工具”窗口中收到任何错误。不过,我确实收到了一些警告和消息:

  • 警告:DOM7011:此页面上的代码禁用了后退和前进缓存。
  • 消息:HTML1300:发生导航。
  • 消息:WEBGL11258:暂时切换到软件渲染以显示 WebGL 内容。该应用程序使用 Cesium 的默认 Bing map key 。请尽快为应用程序创建一个新 key ...

有关 key 的消息很奇怪,因为我肯定在代码中使用了自己的 key ,尽管我不认为这会干扰实体完全没有错误地出现。此时我很困惑,我认为如果无法显示实体就会出现错误,但我什么也没得到。可能是因为它确实需要在服务器上运行。关于我缺少什么或如何仅使用本地配置在 CesiumJS 上绘制实体的任何提示?

最佳答案

Bing 键错误消息仍然显示,因为您的查看器上有可见的地理编码器小部件(默认情况下),并且地理编码器使用 Bing API 进行地理编码。您可以通过在构造 Cesium.Viewer 之前预先指定 key 来修复它,如下所示:

Cesium.BingMapsApi.defaultKey = 'your_key_here';

var viewer = new Cesium.Viewer('cesiumContainer', {
baseLayerPicker: false,
imageryProvider: new Cesium.BingMapsImageryProvider({
url : 'http://dev.virtualearth.net'
})
});

此外,不支持直接从 file:// 协议(protocol)运行 Cesium,因为 Cesium 严重依赖纹理、Web Worker 脚本、JSON 文件等 Assets 。典型的浏览器会阻止文件中的 JavaScript 访问其他文件。因此,Cesium 附带了一个小的 server.js 文件,您可以使用 NodeJS 运行该文件,以在本地获得一个小型开发服务器来托管 Cesium 的副本。更多详情请参见Cesium Up and Running .

遵循此建议后,原始问题中的“绿框”代码应该可以正常运行。

关于javascript - 实体未出现在 CesiumJS 中,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/44569486/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com