By default, CesiumJS uses several external data sources which require internet access at runtime, though none of these dependencies are required. This guide lists these external sources and how to configure CesiumJS to work in a fully offline (no internet access) environment.
The default imagery provider in CesiumJS is Cesium ion global imagery through Bing Maps. This provider loads data from api.cesium.com
and dev.virtualearth.net
as well as several other tile servers that are subdomains of virtualearth.net
. To use another provider, pass it into the constructor for the Viewer
widget.
If you have an imagery server on your local network (e.g. WMS, ArcGIS, Google Earth Enterprise), you can configure CesiumJS to use that. Otherwise, CesiumJS ships with a low-resolution set of images from Natural Earth II in Assets/Textures/NaturalEarthII
.
By default, the BaseLayerPicker
includes options for several sample online imagery and terrain sources. In an offline application, you should either disable that widget completely, by passing baseLayerPicker : false
to the Viewer
widget's constructor, or use the imageryProviderViewModels
and terrainProviderViewModels
options to configure the sources that will be available in your offline application.
The Geocoder
widget, which allows flying to addresses and landmarks, uses the Cesium ion API at api.cesium.com
. In your offline application, you should disable this functionality by passing geocoder : false
to the Viewer
constructor.
This example shows how to configure CesiumJS to avoid use of online data sources.
const viewer = new Cesium.Viewer("cesiumContainer", {
baseLayer: Cesium.ImageryLayer.fromProviderAsync(
Cesium.TileMapServiceImageryProvider.fromUrl(
Cesium.buildModuleUrl("Assets/Textures/NaturalEarthII"),
),
),
baseLayerPicker: false,
geocoder: false,
});
Most other files loaded in CesiumJS, such as 3D Tiles or glTF, are static assets that do not require any server-side operations to load. However, since browsers commonly treat requests to load resources using the file://
schema as cross-origin requests, it's recommended that you set up a local server.
Download and install Node.js
At the command line, run
npm install http-server -g
This will install the 'http-server' app from https://github.com/http-party/http-server globally
In the directory that contains the data, run
http-server -a localhost -p 8003 --cors=http://localhost:8080/
This will start the server, under the address localhost, using port 8003
. The cors parameter will allow the a CesiumJS app running at port 8080
to access the data from this locally running server.
Load files in a CesiumJS app at the served url.
For example, a local tileset in an example
directory can now be loaded with the following url:
try {
const tileset = await Cesium.Cesium3DTileset.fromUrl(
"http://localhost:8003/example/tileset.json",
);
viewer.scene.primitives.add(tileset);
} catch (error) {
console.log(`Error loading tileset: ${error}`);
}
此处可能存在不合适展示的内容,页面不予展示。您可通过相关编辑功能自查并修改。
如您确认内容无涉及 不当用语 / 纯广告导流 / 暴力 / 低俗色情 / 侵权 / 盗版 / 虚假 / 无价值内容或违法国家有关法律法规的内容,可点击提交进行申诉,我们将尽快为您处理。