Web 场景是跨 GeoScene 进行 3D 制图的核心元素。它定义了场景的内容、样式、环境和幻灯片,并且可以在多个 GeoScene Web 和桌面应用程序之间共享。可以使用场景查看器在 GeoScene Pro 和 GeoScene Online 中创建、发布和使用 Web 场景。Web 场景将保存为 JSON 文档,GeoScene Maps SDK for JavaScript 可通过 WebScene 类使用该文档,以便轻松创建引人注目的 3D 应用程序。JSON 文档是根据 Web 场景规范编写的。
尽管您可以轻松创建自己的场景,但 GeoScene Online 中有数千个公开可用的 Web 场景可用于开始使用 API。您可以修改这些场景或向这些场景添加新内容。
要将 WebScene 加载到 SceneView 中,只需通过此类的 portalItem 属性引用 GeoScene Online 中 Web 场景项目的 ID 即可。
const scene = new WebScene({
portalItem: { // autocasts as new PortalItem()
id: "affa021c51944b5694132b2d61fe1057" // ID of the WebScene on geoscene.cn
}
});
要从本地门户加载 WebScene,请在 geosceneConfig.portalurl 中设置门户 url。
geosceneConfig.portalUrl = "https://myHostName.geoscene.com/geoscene";
const scene = new WebScene({
portalItem: { // autocasts as new PortalItem()
id: "0614ea1f9dd043e9ba157b9c20d3c538" // ID of the WebScene on the on-premise portal
}
});
然后,必须在 SceneView 的 map 属性中引用 WebScene 实例。
const view = new SceneView({
map: scene, // The WebScene instance created above
container: "viewDiv"
});
这将开始将所有图层和场景选项加载到 3D SceneView 中。可以调用 WebScene 实例上的 when() 方法来执行只能在已加载 WebScene 后运行的进程。
scene.when(function() {
// All layers and the basemap have been created
});
view.when(function() {
// All layer and basemap resources have been loaded and are ready to be displayed
});
WebScene 定义了场景的内容以及场景在应用程序中加载时的外观。使用此类时,可能会与 web 场景的几个常见属性进行交互:
- Layers:定义 web 场景的内容和样式,以及弹出窗口、标注、图例和其他设置。
- Basemap:定义 web 场景的底图图层。
- Ground:定义 web 场景的高程图层。
- Presentation:包含 web 场景幻灯片。
- InitialViewProperties
- Environment:配置场景的照明、阴影和大气层。
- Viewpoint:配置初始视点。
- ViewingMode:定义 web 场景是全球场景还是局部场景。
共有两种类型的 web 场景:global
或 local
。全球场景可将地球渲染为一个球体,而局部场景将地球渲染为平面。可以使用 WebMercator、WGS84、CGCS2000、Mars_2000_(Sphere)、GCS_Mars_2000 和 GCS_Moon_2000 创建全球 Web 场景。可以使用 WGS84、CGCS2000 或任何投影坐标系创建本地 web 场景。
幻灯片可存储场景可视化状态的快照,稍后可将其重新应用到场景中。幻灯片包含视点、图层可见性、底图和环境 (以及标题和缩略图) 的属性,以便 3D 应用程序的用户可以轻松导航场景并准确地重新创建该场景的存储视图。
Web 场景可以使用 saveAs() 或 save() 保存到 GeoScene Online 或 Portal。定义门户,加载后保存 web 场景。
const portal = new Portal({
url: "https://myportal.geoscene.cn/", // the url of the portal
authMode: "immediate" // user authenticates by signing in when the Portal is loaded
});
// once the portal is loaded save the web scene to the portal as a new web scene
portal.load().then(function() {
webscene.saveAs({
title: "My Scene",
portal: portal
})
.then(function() {
console.log("Scene was saved");
})
.catch(function(err) {
console.log(err);
});
})
请务必注意,GraphicsLayer、ImageryLayer 和 StreamLayer 无法保存到 web 场景中。通过将缓存影像服务声明为 TileLayer,可将其保存到 web 场景中。OpenStreetMapLayer 可以保存为 baseLayer。 。
构造函数
属性概述
名称 | 类型 | 描述 | 类 |
---|---|---|---|
Collection<Layer> | 地图中所有图层的拼合集合。 更多详情 | Map | |
Collection<Layer> | 地图层次结构中任意位置的表的拼合集合。 更多详情 | Map | |
ApplicationProperties | 应用程序和 UI 元素的配置。 更多详情 | WebScene | |
String | 创作 WebScene 的应用程序的名称。 更多详情 | WebScene | |
String | 创作 WebScene 的应用程序的版本。 更多详情 | WebScene | |
Basemap | 指定地图的底图。 更多详情 | Map | |
Extent | 此属性仅适用于本地场景。 更多详情 | WebScene | |
Boolean | 此属性仅适用于本地场景。 更多详情 | WebScene | |
String | 类的名称。 更多详情 | Accessor | |
Collection<(FeatureLayer|SceneLayer|SubtypeGroupLayer)> | 可编辑图层的集合。 更多详情 | Map | |
MapFloorInfo | 将 web 场景配置为楼层感知型地图时,该地图将定义 floorInfo 属性。 更多详情 | WebScene | |
Ground | 指定地图的表面属性。 更多详情 | Map | |
HeightModelInfo | WebScene 的高度模型信息。 更多详情 | WebScene | |
InitialViewProperties | WebScene 的初始视图。 更多详情 | WebScene | |
Collection<Layer> | 业务图层的集合。 更多详情 | Map | |
Boolean | 指示实例是否已加载。 更多详情 | WebScene | |
Error | 如果加载时发生错误,则返回 Error 对象。 更多详情 | WebScene | |
String | 表示 load 操作的状态。 更多详情 | WebScene | |
PortalItem | 从中加载 WebScene 的门户项目。 更多详情 | WebScene | |
Presentation | 更多详情 | WebScene | |
Object | 从中读取 WebScene 的源文档的版本。 更多详情 | WebScene | |
Collection<Layer> | 图层实例的集合,这些实例是保存在 Map 或 WebMap 中的表。 更多详情 | Map | |
String | 用于 web 场景的缩略图的 URL。 更多详情 | WebScene | |
String | 最新支持的 webscene 规范版本。 更多详情 | WebScene |
属性详细信息
-
-
地图中所有图层的扁平化集合。此集合包含底图图层、业务图层和地面图层。图层组及其子图层也是此集合的一部分。底图中的参考图层将始终包含在集合的末尾。
不应将图层直接添加到此集合中。它们只能通过 layers、basemap 或 ground 属性进行添加。
若要访问表的扁平化集合,请改为使用 allTables 属性。
示例// Find a layer with title "US Counties" const foundLayer = map.allLayers.find(function(layer) { return layer.title === "US Counties"; }); // Create a filtered collection of the non-group layers const nonGroupLayers = map.allLayers.filter(function(layer) { return !foundLayer.layers; }); // Listen for any layer being added or removed in the Map map.allLayers.on("change", function(event) { console.log("Layer added: ", event.added); console.log("Layer removed: ", event.removed); console.log("Layer moved: ", event.moved); });
-
起始版本:GeoScene Maps SDK for JavaScript 4.17
-
地图层次结构中任意位置的表的扁平化集合。这将包含地图表中的单个表,以及任何图层组表。为了以此方式识别表,FeatureLayer 属性必须返回
true
。目前,仅识别要素图层表。
要访问空间图层,请改为使用 allLayers 属性。
示例// A feature layer where isTable = true. const foundTable = map.allTables.find(function(table) { // Find a table with title "US Counties" return table.title === "US Counties"; });
-
applicationProperties ApplicationProperties起始版本:GeoScene Maps SDK for JavaScript 4.7
-
应用程序和 UI 元素的配置。
-
authoringApp String起始版本:GeoScene Maps SDK for JavaScript 4.14
-
创作 WebScene 的应用程序的名称。
-
authoringAppVersion String起始版本:GeoScene Maps SDK for JavaScript 4.14
-
创作 WebScene 的应用程序的版本。
-
指定地图的底图。底图是一组切片图层,用于为 MapView 或 SceneView 以及地图中的其他业务图层提供地理上下文。
此值可以是 Basemap 实例,也可以是下表中列出的字符串之一。
使用这些底图需要 GeoScene Enterprise 许可。
值 源 tianditu-vector
中国地图彩色版 tianditu-image
中国地图灰色版 geoscene-blue
中国地图蓝黑版 geoscene-warm
中国地图暖色版 示例// Set the basemap in the constructor const map = new Map({ basemap: "tianditu-vector" }); // Set the basemap after the map instance is created map.basemap = "tianditu-vector";
-
此属性仅适用于本地场景。表示用于定义局部场景边界或 Extent 的可选剪裁区域。如果已定义,则仅显示区域内的数据 (包括底图)。
将 clippingEnabled 属性设置为
true
以将指定的 clippingArea 应用于视图。- 另请参阅
-
clippingEnabled Boolean
-
此属性仅适用于本地场景。确定是否启用了使用 clippingArea 进行裁剪。
- 默认值:false
- 另请参阅
-
起始版本:GeoScene Maps SDK for JavaScript 4.7
-
类的名称。声明的类名称格式化为
geoscene.folder.className
。
-
起始版本:GeoScene Maps SDK for JavaScript 4.20
-
可编辑图层的集合。如果图层启用了编辑功能,并且与图层进行身份验证的用户具有编辑权限,则图层将被视为可编辑。
-
floorInfo MapFloorInfoautocast起始版本:GeoScene Maps SDK for JavaScript 4.19
-
将 web 场景配置为楼层感知型地图时,该地图将定义 floorInfo 属性。楼层感知型场景是包含室内 GIS 数据的场景,用于表示可位于建筑物特定楼层的要素。楼层信息必须至少包含 levelLayer 和 facilityLayer 属性。siteLayer 属性是可选的。
- 默认值:null
-
指定地图的表面属性。在 MapView 中,当 profile 包含 ElevationProfileLineGround 时,ElevationProfile 微件将使用此属性。在 3D SceneView 中,它使用 ElevationLayers 集合在地图表面上渲染现实世界中的地形或地形变化。
此值可以是 Ground 的实例,也可以是以下字符串之一。
world-elevation
,用于使用 Terrain3D 服务的默认地面实例。world-topobathymetry
,用于使用 TopoBathy3D 服务将表面高程和测深相结合的地面实例。
地面不能设置为
null
或undefined
,要保证始终包含 Ground 类型的实例。可以通过将 ground 属性设置为新的空 Ground 实例或移除所有地面图层来从地面中移除高程。- 另请参阅
示例// Use the world elevation service const map = new Map({ basemap: "tianditu-vector", ground: "world-elevation" });
// Create a map with the world elevation layer overlaid by a custom elevation layer const worldElevation = ElevationLayer({ url: "//links.geoscene.cn/elevation3d/rest/services/WorldElevation3D/Terrain3D/ImageServer" }); const customElevation = ElevationLayer({ url: "https://my.geoscene.cn/geoscene/rest/service/MyElevationService/ImageServer" }); const map = new Map({ basemap: "tianditu-vector", ground: new Ground({ layers: [ worldElevation, customElevation ] }) });
-
heightModelInfo HeightModelInfoautocast起始版本:GeoScene Maps SDK for JavaScript 4.5
-
-
initialViewProperties InitialViewPropertiesautocast
-
WebScene 的初始视图。此对象包含 viewpoint、spatialReference、viewingMode 和 environment 等属性,这些属性应在场景加载时应用于 SceneView。
-
-
业务图层的集合。此属性包含可以执行查询、分配不同渲染器、分析等的业务图层,例如 FeatureLayers、WebTileLayers 和 GraphicsLayers。它不包括底图。
图层是表示真实世界现象的一个或多个要素或图形的集合。每个要素都包含一个符号和地理数据,允许其在地图上以具有空间上下文的图形进行渲染。图层中的要素还可能包含数据属性,这些属性提供可在弹出窗口中查看并用于渲染图层的附加信息。
可以使用 add() 或 addMany() 方法在构造函数中添加图层,也可以使用 add() 或 addMany() 直接添加到图层集合中。
在 3D 模式下,对于在地形上渲染的图层,图层的顺序还取决于图层的类型。切片图层 (VectorTileLayer、WebTileLayer、WMTSLayer) 始终按图层集合中指定的相同顺序首先绘制。动态图层 (MapImageLayer、ImageryLayer、WMSLayer 和具有高程模式
on-the-ground
的基于要素的图层) 将使用图层集合中的顺序在顶部进行渲染。图层只能添加到一个父图层中。无法将同一图层添加到多个 Maps 或 GroupLayers 中。如果尝试这样做,图层将自动从其当前父级中移除,并放置在新的父级中。
let layer = new GraphicsLayer(); // The layer belongs to map1 map1.layers.add(layer); // The layer now belongs to map2 // and implicitly does: map1.layers.remove(layer) map2.layers.add(layer);
示例// Add layers in the constructor of Map using an array let fl = new FeatureLayer(url); let gl = new GraphicsLayer(); let map = new Map({ layers: [fl, gl] }); // Add layers using add() map.addMany([fl, gl]); // Add layers using layers collection map.layers.addMany([fl, gl]); // Add layers using layers collection's push method map.layers.push(fl, gl);
-
loaded Booleanreadonly
-
- 默认值:false
-
loadError Errorreadonly
-
如果加载时发生错误,则返回 Error 对象。
- 默认值:null
-
loadStatus Stringreadonly
-
表示 load 操作的状态。
值 描述 not-loaded 对象的资源尚未加载。 loading 对象的资源当前正在加载。 loaded 对象的资源已加载且未出现错误。 failed 无法加载对象的资源。有关更多详情,请参阅 loadError。 可能值:"not-loaded"|"loading"|"failed"|"loaded"
- 默认值:not-loaded
-
portalItem PortalItemautocast
-
从中加载 WebScene 的门户项目。
-
presentation Presentationautocast
-
- 另请参阅
-
sourceVersion Objectreadonly起始版本:GeoScene Maps SDK for JavaScript 4.1
-
从中读取 WebScene 的源文档的版本。WebScene 必须为 1.x 版才能加载到应用程序中。
-
-
图层实例的集合,这些实例是保存在 Map 或 WebMap 中的表。为了以此方式识别表,FeatureLayer 的 isTable 属性必须返回
true
。可以通过以下选项之一创建表:- 将 URL 引用到要素服务中的表。
- 使用 Layer.fromGeoSceneServerUrl 方法创建要素图层,并使用要素图层的 isTable 属性确认该图层是表。这可以是要素服务或要素集合。
- 使用 Layer.fromPortalItem 方法创建要素图层,并使用要素图层的 isTable 属性确认该图层是表。这可以是要素服务或要素集合。
- 创建内存、非空间的客户端要素图层。
从 4.17 开始,可以将要素服务中的非空间表保存到 WebMap,但尚不支持内存 (要素集合) 表。
尚不支持在 GroupLayer 中保留表。如果需要,请将它们添加到 Map 或 WebMap 中。
示例// This snippet shows how to add a table to a map's table collection. // FeatureLayer.isTable = false const featureLayer = new FeatureLayer({ url: "https://sampleserver6.arcgisonline.com/arcgis/rest/services/SF311/FeatureServer/0" }); // FeatureLayer.isTable = true const table = new FeatureLayer({ url: "https://sampleserver6.arcgisonline.com/arcgis/rest/services/SF311/FeatureServer/1" }); // Add featureLayer to the map map.add(featureLayer); // In order for the table to be stored within // the map's table collection, load it and confirm it is the right type. table.load().then(() => { // Add the table to the collection map.tables.add(table); console.log("Table is added to map's table collection"); });
// This snippet shows how to persist a table to an existing web map // FeatureLayer.isTable = true const table = new FeatureLayer({ url: "https://services.arcgis.com/V6ZHFr6zdgNZuVG0/arcgis/rest/services/Crash_details_table/FeatureServer/0" }); // Create Webmap instance const webmap = new WebMap({ portalItem: { id: webmapId } }); // When web map is ready, load the table and add it to the web map webmap.when(() => { table.load().then(() => { console.log("Adding table"); // Add table to the webmap's table collection webmap.tables.add(table); }); }); // Call updateFrom on webmap and pass in the existing view webmap.updateFrom(view).then(() => { // Call saveAs (or save) on the web map webmap.saveAs({ // autocasts as new PortalItem() title: "New WebMap" }); });
// This snippet shows how to add an in-memory table to a map // Create the array of objects containing field info const fields = [{ name: "ObjectID", alias: "ObjectID", type: "oid" }, { name: "tree_type", alias: "Tree type", type: "string" }, { name: "species", alias: "Species", type: "string" }]; // Create the array of graphics holding attribute info const graphics = [{ attributes: { "tree_type": "deciduous", "species": "maple", "ObjectID": 2 } }, { attributes: { "tree_type": "coniferous", "species": "pine", "ObjectID": 3 } }]; // Create the feature layer (feature collection) table const table = new FeatureLayer({ fields: fields, objectIdField: "ObjectID", source: graphics }); // Check when map is ready and load the table map.when(() => { table.load().then(() => { console.log("Adding table"); map.tables.add(table); }); });
-
thumbnailUrl String起始版本:GeoScene Maps SDK for JavaScript 4.9
-
用于 web 场景的缩略图的 URL。默认情况下,缩略图将是与 web 场景关联的门户项目的缩略图 URL。可通过更改缩略图 URL 并保存 web 场景来更新 web 场景的缩略图。使用 updateFrom 从指定视图自动更新缩略图。
示例scene.updateFrom(view) .then(function() { return scene.save(); }) .then(function(portalItem) { console.log("Saved to portal", portalItem.id); }) .catch(function(error) { console.error("Error saving to portal", error); });
-
version Stringstatic,readonly
-
最新支持的 webscene 规范版本。
方法概述
名称 | 返回值类值 | 描述 | 类 |
---|---|---|---|
将图层添加到图层集合。 更多详情 | 地图 | ||
添加一个或多个与对象的生命周期相关联的句柄。 更多详情 | Accessor | ||
将图层或图层数组添加到图层集合。 更多详情 | 地图 | ||
销毁 web 场景和任何相关资源,包括其 layers、basemap、ground 和 portalItem。 更多详情 | WebScene | ||
Layer | 返回基于给定图层 ID 的图层。 更多详情 | 地图 | |
Layer | 根据给定的表 ID 返回一个表。 更多详情 | 地图 | |
WebScene | 创建此类的新实例并使用从 GeoScene 产品生成的 JSON 对象值对其进行初始化。 更多详情 | WebScene | |
Boolean | 如果存在指定的句柄组,则返回 true。 更多详情 | Accessor | |
Boolean |
| WebScene | |
Boolean |
| WebScene | |
Boolean |
| WebScene | |
Promise | 触发 WebScene 实例的加载。 更多详情 | WebScene | |
Promise<WebScene> | 加载与 webscene 关联的所有外部可加载资源。 更多详情 | WebScene | |
Layer | 从图层集合中移除指定的图层。 更多详情 | 地图 | |
Layer[] | 移除所有图层。 更多详情 | 地图 | |
移除对象拥有的句柄组。 更多详情 | Accessor | ||
Layer[] | 移除指定的图层。 更多详情 | 地图 | |
Layer | 更改图层顺序。 更多详情 | 地图 | |
Promise<PortalItem> | 将 webscene 保存到其关联的门户项目。 更多详情 | WebScene | |
Promise<PortalItem> | 将 webscene 保存到新的门户项目。 更多详情 | WebScene | |
Object | 将此类的实例转换为其 GeoScene portal JSON 表示。 更多详情 | WebScene | |
Promise | 更新与视图相关的 WebScene 属性。 更多详情 | WebScene | |
Promise | 一旦创建了类的实例,就可以使用 | WebScene |
方法详细说明
-
add(layer, index)inherited
-
将图层添加到图层集合。调用此方法时将触发 before-changes、before-add、after-add、after-changes 和 change 事件。
参数图层或解析为图层以添加到图层集合的 promise。
index Numberoptional可以在图层集合中的指定索引处添加图层。如果未指定索引或指定的索引大于当前图层数,则该图层将自动附加到图层集合中的图层列表中,并且索引会被规范化。
- 另请参阅
示例// add() and push methods can be used // to add a layer to layers collection // add a layer to layers collection using add map.add(layer); // add a layer at the end of layers collection map.layers.push(layer);
-
addHandles(handleOrHandles, groupKey)inherited起始版本:GeoScene Maps SDK for JavaScript 4.25
-
添加一个或多个与对象的生命周期相关联的句柄。当对象被销毁时,将移除句柄。
// Manually manage handles const handle = reactiveUtils.when( () => !view.updating, () => { wkidSelect.disabled = false; }, { once: true } ); // Handle gets removed when the object is destroyed. this.addHandles(handle);
参数handleOrHandles WatchHandle|WatchHandle[]对象销毁后,标记为要移除的句柄。
groupKey *optional标识句柄应添加到的组的键。组中的所有句柄稍后都可使用 Accessor.removeHandles() 进行删除。如果未提供键,则句柄将被添加到默认组。
-
addMany(layers, index)inherited
-
将图层或图层数组添加到图层集合。调用此方法时将触发 before-changes、before-add、after-add、after-changes 和 change 事件。
图层集合上的 push() 方法也可用于添加一个或多个图层。
参数要添加到图层集合中的图层。
index Numberoptional可以在图层集合中的指定索引处添加图层。如果未指定索引或指定的索引大于当前图层数,则该图层将自动附加到图层集合中的图层列表中,并且索引会被规范化。
- 另请参阅
示例// addMany and push methods can be used // to add layers to layers collection // add an array of layers to layers collection using addMany map.addMany([layer, layer2]); // add layers to layers collection using push method map.layers.push(layer, layer2);
-
destroy()起始版本:GeoScene Maps SDK for JavaScript 4.17
-
销毁 web 场景和任何相关资源,包括其 layers、basemap、ground 和 portalItem。一旦地图损坏,则无法再使用这些内容。为防止这些对象被销毁,请在调用
destroy()
之前将它们从 webscene 中移除。// prevent the layers from being destroyed by removing them from the webscene const layers = webscene.layers.removeAll(); // unset basemap from the webscene so that it is not destroyed const basemap = webscene.basemap; webscene.basemap = null; // unset ground from the webscene so that it is not destroyed const ground = webscene.ground; webscene.ground = null; // unset portalItem from the webscene so that it is not destroyed const portalItem = webscene.portalItem; webscene.portalItem = null; // destroy the webscene and any remaining associated resources webscene.destroy();
-
起始版本:GeoScene Maps SDK for JavaScript 4.18
-
根据给定的表 ID 返回一个表。
参数tableId String分配给表的 ID。
返回类型 描述 Layer 返回请求的表格对象。
-
-
创建此类的新实例并使用从 GeoScene 产品生成的 JSON 对象值对其进行初始化。传入到输入
json
参数的对象通常来自对 REST API 中查询操作的响应或来自另一个 GeoScene 产品toJSON()方法。如果在视图外部使用 WebScene,则必须显式调用 load() 以与其资源进行交互。有关何时以及如何使用该函数的详细信息和示例,请参阅指南中的使用 fromJSON() 主题。参数json ObjectGeoScene 格式实例的 JSON 表示。
返回类型 描述 WebScene 返回该类的新实例。 示例// Retrieve a WebScene JSON by url and deserialize it into a WebScene API instance require(["geoscene/request", "geoscene/WebScene"], function(geosceneRequest, WebScene) { geosceneRequest("http://domain/url/to/webscene.json").then(function(json) { const scene = WebScene.fromJSON(json); const view = new SceneView({ map: scene, container: "viewDiv" }); }); });
-
起始版本:GeoScene Maps SDK for JavaScript 4.25
-
如果存在指定的句柄组,则返回 true。
参数groupKey *optional组键。
返回类型 描述 Boolean 如果存在指定的句柄组,则返回 true
。示例// Remove a named group of handles if they exist. if (obj.hasHandles("watch-view-updates")) { obj.removeHandles("watch-view-updates"); }
-
isFulfilled(){Boolean}
-
isFulfilled()
可用于验证创建类的实例是否已完成 (已解决或已拒绝)。如果满足,则返回true
。返回类型 描述 Boolean 指示创建类的实例是否已完成 (已解决或已拒绝)。
-
isRejected(){Boolean}
-
isRejected()
可用于验证创建类的实例是否被拒绝。如果被拒绝,则返回true
。返回类型 描述 Boolean 指示创建类的实例是否已被拒绝。
-
load(){Promise}
-
触发 WebScene 实例的加载。
当 WebScene 的业务图层、底图和地面完全创建时,将被视为已加载。使用 portalItem 创建时,
load()
将首先获取其数据以创建内容,否则会立即解析。将 WebScene 实例添加到其 map 属性时,SceneView 会自动调用
load()
方法,以便它可以显示在视图中并加载每个单独的图层。如果在视图外部使用 WebScene (例如,用于预加载视图),则必须显式调用load()
以与其资源进行交互。返回类型 描述 Promise 加载 WebScene 时解析。 - 另请参阅
示例// programmatically load all the layers require([ "geoscene/WebScene" ], function( WebScene ) { const scene = new WebScene({ portalItem: { id: "affa021c51944b5694132b2d61fe1057" } }); scene.load() .then(function() { // load the basemap to get its layers created return scene.basemap.load(); }) .then(function() { // grab all the layers and load them const allLayers = scene.allLayers; const promises = allLayers.map(function(layer) { return layer.load(); }); return Promise.all(promises.toArray()); }) .then(function(layers) { // each layer load promise resolves with the layer console.log("all " + layers.length + " layers loaded"); }) .catch(function(error) { console.error(error); }); });
-
起始版本:GeoScene Maps SDK for JavaScript 4.9
-
加载与 webscene 关联的所有外部可加载资源。对于 web 场景,这将加载地面、底图、图层和幻灯片底图。
返回类型 描述 Promise<WebScene> 当所有可加载资源都已加载时解析。如果至少有一个可加载资源未能加载,则拒绝。 - 另请参阅
示例// Load all resources but ignore if one or more of them failed to load webscene.loadAll() .catch(function(error) { // Ignore any failed resources }) .then(function() { console.log("All loaded"); });
-
从图层集合中移除指定的图层。调用此方法时将触发 before-changes、before-remove、after-remove、after-changes 和 change 事件。
参数layer Layer要从图层集合中移除的图层。
返回类型 描述 Layer 返回从图层集合中移除的图层。
-
移除所有图层。调用此方法时将触发 before-changes、before-remove、after-remove、after-changes 和 change 事件。
返回类型 描述 Layer[] 返回从图层集合中移除的图层。
-
removeHandles(groupKey)inherited起始版本:GeoScene Maps SDK for JavaScript 4.25
-
移除对象拥有的句柄组。
参数groupKey *optional要移除的组键或组键的数组或集合。
示例obj.removeHandles(); // removes handles from default group obj.removeHandles("handle-group"); obj.removeHandles("other-handle-group");
-
移除指定的图层。调用此方法时将触发 before-changes、before-remove、after-remove、after-changes 和 change 事件。
参数要从图层集合中移除的图层数组。
返回类型 描述 Layer[] 返回从图层集合中移除的图层。
-
更改图层顺序。添加的第一个图层始终是基础图层,即使其顺序已更改。调用此方法时将触发 change 事件。
在 3D 模式下,对于在地形上渲染的图层,图层的顺序还取决于图层的类型。切片图层 (VectorTileLayer、WebTileLayer、WMTSLayer) 始终按图层集合中指定的相同顺序首先绘制。动态图层 (MapImageLayer、ImageryLayer、WMSLayer 和具有高程模式
on-the-ground
的基于要素的图层) 将使用图层集合中的顺序在顶部进行渲染。参数layer Layer要移动的图层。
index Number放置图层的索引位置。最底部图层的索引为
0
。返回类型 描述 Layer 返回被移动的图层。
-
save(options){Promise<PortalItem>}起始版本:GeoScene Maps SDK for JavaScript 4.1
-
将 webscene 保存到其关联的门户项目。要保存的门户项目必须已存在且有效。这是一种简便方法,它将使用 PortalItem 在项目中存储 web 场景。Web 场景根据 Web 场景规范标准进行保存。
如果场景显示在视图中,请在保存之前使用 updateFrom 将当前视图属性存储在 webscene 中。
const scene = new WebScene({ portalItem: { id: "94057740a0894145a1d87b796f1a9bd7" } }); const view = new SceneView({ container: "viewDiv", map: scene }); scene.updateFrom(view).then(function() { scene.save(); });
请注意,这会将 webscene 保存到其现有项目中。根据场景的共享方式,不拥有场景的用户可能会对其进行修改。要将现有场景另存为登录到门户实例的用户所拥有的新项目,请使用 saveAs()。
等待每个 save() 操作都解析完成后,再开始新的 save() 操作,以避免潜在的中止错误。
如果尚未加载,则会自动加载 webscene ,然后再保存。
参数options Objectoptional附加选项。
规范ignoreUnsupported Booleanoptional当为
true
时,即使场景包含不受支持的内容 (图层、渲染器、符号),也会保存场景。将不会保存任何不受支持的内容,并且从其门户项目重新加载场景时,场景可能会有所不同。返回类型 描述 Promise<PortalItem> 当项目已成功保存或以其他方式拒绝时,使用 PortalItem 实例解析的承诺。
-
saveAs(portalItem, options){Promise<PortalItem>}起始版本:GeoScene Maps SDK for JavaScript 4.1
-
将 webscene 保存到新的门户项目。如果保存已成功完成,则保存的门户项目将在 WebScene 的 portalItem 属性中设置。这是一种便捷方法,它将创建一个新的 PortalItem,并使用 PortalUser.addItem() 将 webscene 存储在 Portal 中。
保存之前,请使用 updateFrom 将当前视图属性存储在 webscene 中。
请注意,这始终会将 webscene 另存为执行编辑和执行
saveAs()
方法的用户所拥有的新门户项目。如果要在不更改其所有权的情况下修改现有项目,请使用 save()。等待每个 saveAs() 操作都解析完成后,再开始新的 saveAs() 操作,以避免潜在的中止错误。
如果尚未加载,则会自动加载 webscene ,然后再保存。
参数规范自动转换自 Object要将场景保存到的新门户项目。
门户项目属性 (如,标题或描述) 需要在项目上显式设置,并且不会从当前关联的场景门户项目 (如果有) 自动复制。
options Objectoptional其他保存选项。
规范folder PortalFolderoptional要在其中保存项目的文件夹。
ignoreUnsupported Booleanoptional允许保存场景,即使它包含不受支持的内容 (图层、渲染器、符号)。将不会保存任何不受支持的内容,并且从其门户项目重新加载场景时,场景可能会有所不同。
返回类型 描述 Promise<PortalItem> 当项目已成功保存或以其他方式拒绝时,使用 PortalItem 实例解析的承诺。 示例const scene = new WebScene(); scene.saveAs({ // autocasts as new PortalItem() title: "New WebScene" });
const scene = new WebScene({ basemap: "tianditu-vector" }); const view = new SceneView({ container: "viewDiv", map: scene }); // use updateFrom in case the webscene is displayed in a view // to store the current view properties in the scene scene.updateFrom(view).then(function() { scene.saveAs({ // autocasts as new PortalItem() title: "New WebScene" }); });
-
toJSON(){Object}
-
将此类的实例转换为其 GeoScene portal JSON 表示。有关详细信息,请参阅指南中的使用 fromJSON() 主题和 Web 场景规范。
返回类型 描述 Object 此类实例的 GeoScene portal JSON 表示。
-
updateFrom(view, options){Promise}
-
更新与视图相关的 WebScene 属性。
通常应在保存场景之前调用此操作。以下属性将从视图中更新:
initialViewProperties.spatialReference
initialViewProperties.viewingMode
clippingArea
heightModelInfo
根据提供的选项,还会更新以下属性:
initialViewProperties.environment
initialViewProperties.viewpoint
thumbnail
参数规范view SceneView要从中进行更新的视图。
options Objectoptional用于更新的选项。
参数规范environmentExcluded Booleanoptional请勿从视图中更新初始环境,默认为 false。
viewpointExcluded Booleanoptional无需从视图中更新初始视点,默认为 false。
thumbnailExcluded Booleanoptional请勿从视图中更新缩略图。默认值为 true,除非 viewpointExcluded 设置为 true。
thumbnailSize Objectoptional缩略图的大小。默认为 600x400 (长宽比 1.5:1)。请注意,缩略图大小当前可能不大于视图的大小。
规范width Number缩略图的宽度。
height Number缩略图的高度。
返回类型 描述 Promise 在更新完成后解析。
-
when(callback, errback){Promise}起始版本:GeoScene Maps SDK for JavaScript 4.6
-
一旦创建了类的实例,就可以使用
when()
。此方法接受两个输入参数:callback
函数和errback
函数。callback
在类的实例加载时执行。errback
在类的实例无法加载时执行。参数callback Functionoptional当 promise 解决时调用的函数。
errback Functionoptional当 promise 失败时执行的函数。
返回类型 描述 Promise 返回 callback
结果的新承诺,可用于链接其他函数。示例// Although this example uses MapView, any class instance that is a promise may use when() in the same way let view = new MapView(); view.when(function(){ // This function will execute once the promise is resolved }, function(error){ // This function will execute if the promise is rejected due to an error });