WebMap

AMD: require(["geoscene/WebMap"], (WebMap) => { /* 代码 */ });
ESM: import WebMap from "@geoscene/core/WebMap";
类: geoscene/WebMap
继承于: WebMap Map Accessor
起始版本: GeoScene API for JavaScript 4.22

将 Web 地图Web 地图从 GeoScene Online 或 GeoScene Enterprise 门户加载到 MapView 中。它定义了 web 地图的内容、样式和书签,并且可以在多个 GeoScene Web 和桌面应用程序之间共享。Web 地图将另存为 JSON 文档,GeoScene API for JavaScript 可通过 WebMap 类使用该文档,以便轻松创建引人注目的 2D 应用程序。JSON 文档是根据 webmap 规范webmap 规范编写的。尽管您可以轻松创建自己的 web 地图,但 GeoScene Online 中有许多示例 web 地图GeoScene Online 中有许多示例 web 地图可用于开始使用 API。您可以修改这些 web 地图或向这些 web 地图添加新内容。

要将 WebMap 从 GeoScene Online 加载到 MapView 中,必须在此类的 portalItem 属性中引用 web 地图的 ID。

const webmap = new WebMap({
  portalItem: { // 转换成 new PortalItem()
    id: "3a9976baef9240ab8645ee25c7e9c09f"
  }
});

要从本地门户加载 Web 地图,请在 geosceneConfig.portalurl 中设置门户url。

geosceneConfig.portalUrl = "https://myHostName.geoscene.cn/geoscene";

const webmap = new WebMap({
  portalItem: { // 转换成 new PortalItem()
    id: "3a9976baef9240ab8645ee25c7e9c09f"
  }
});

然后,必须在视图的map属性中引用 WebMap 实例。

const view = new MapView({
  map: webmap,  // The WebMap instance created above
  container: "viewDiv"
});

已知限制

  • 目前不支持 WCSLayerWFSLayers 必须来自 WFS 2.0.0 服务,并且启用了 GeoJSON 输出格式。

    • 如果 web 地图包含 API 中尚不支持的图层类型,则会将图层创建为不受支持的图层。此图层类型专门用于以下情况:图层可能存在于给定的 WebMap 中(例如,WFS 1.0.0 中的 WFS 图层),但访问该图层的 API 版本当前可能不受支持。
    • 如果 WebMap 的未来版本包含新类型的图层,则将使用 UnknownLayer。API 版本可能无法识别此层类型,因此它将显示为 UnknownLayer
  • 嵌入式路由

    • 在 GeoScene Online 8.1 版本(2020 年 3 月)之前,从要存储在 WebMap 中的项目复制路径图层时,路径图层将存储为嵌入要素集合,并且无意中不会归因于路径。当这些 web 地图由 JS API 加载时,路由将由 GroupLayer 而不是 geoscene/layers/RouteLayer 表示。这不会影响 GeoScene Online 8.1 版本发布后复制的路径图层项目或存储为门户项目的路径。复制要存储为 web 地图一部分的路径图层项目并不常见。
  • 从弹出要素访问几何

    • 从版本 4.22 开始,web 地图不再在其弹出窗口要素中返回几何。如果弹出窗口没有用于几何的引用的 Arcade 表达式,则现在需要设置 webmap 图层的 outFields 或其 PopupTemplate outFields
示例:

构造函数

new WebMap(properties)
参数:
properties Object
optional

所有可传入构造函数的属性,请参见属性列表

示例代码:
// 典型用法
const map = new WebMap({
  portalItem: {
    id: "3a9976baef9240ab8645ee25c7e9c09f"
  }
});

属性列表

可以设置、检索或监听的属性。参见 使用属性
展示继承属性 隐藏继承属性
属性 类型 描述
Collection<Layer>更多信息

地图中所有图层的拼合集合。

更多信息Map
Collection<Layer>更多信息

地图层次结构中任意位置的表的拼合集合。

更多信息Map
ApplicationProperties更多信息

地图层次结构中任意位置的表的拼合集合。

更多信息WebMap
String更多信息

创作 WebMap 的应用程序的名称。

更多信息WebMap
String更多信息

创作 WebMap 的应用程序的版本。

更多信息WebMap
Basemap更多信息

指定地图的底图。

更多信息Map
Collection<Bookmark>更多信息

一组已保存的地理范围,允许最终用户快速导航到感兴趣的特定区域。

更多信息WebMap
String更多信息

类名。

更多信息Accessor
Collection<(FeatureLayer|SceneLayer|SubtypeGroupLayer)>更多信息

可编辑图层的集合。

更多信息Map
MapFloorInfo更多信息

将 web 地图配置为楼层感知地图时,该地图将定义 floorInfo 属性。

更多信息WebMap
Ground更多信息

指定地图的表面属性。

更多信息Map
InitialViewProperties更多信息

WebMap 的初始视图。

更多信息WebMap
Collection<Layer>更多信息

业务图层的集合。

更多信息Map
Boolean更多信息

指示实例是否已加载。

更多信息WebMap
Error更多信息

如果在加载时发生错误,则返回 Error 对象。

更多信息WebMap
String更多信息

表示加载操作的状态。

更多信息WebMap
PortalItem更多信息

从中加载 WebMap 的门户项目。

更多信息WebMap
Object更多信息

提供多张幻灯片。

更多信息WebMap
Object更多信息

从中读取 WebMap 的源文档的版本。

更多信息WebMap
Collection<Layer>更多信息

图层实例的集合,这些实例是保存在地图和/或 Web 地图中的表。

更多信息Map
String更多信息

用于 web 地图的缩略图的 URL。

更多信息WebMap
Collection<UtilityNetwork>更多信息

实用程序网络对象包含保存在 web 地图上的实用程序网络的集合。

更多信息WebMap
Widgets更多信息

小部件对象包含向用户公开的小部件。

更多信息WebMap

属性详细说明

allLayers Collection<Layer>readonly inherited

地图中所有图层的拼合集合。此集合包含底图图层业务图层地面图层图层组及其子图层也是此集合的一部分。底图中的参考图层将始终包含在集合的末尾。

不应将图层直接添加到此集合中。它们只能通过图层底图地面属性进行添加。

若要访问表的平展集合,请改用 allTables 属性。

示例代码:
// Find a layer with title "US Counties"
const foundLayer = map.allLayers.find(function(layer) {
 return layer.title === "US Counties";
});

// 创建非图层组的过滤集合
const nonGroupLayers = map.allLayers.filter(function(layer) { return !foundLayer.layers; }); // 侦听在地图中添加或移除的任何图层
map.allLayers.on("change", function(event) { console.log("Layer added: ", event.added); console.log("Layer removed: ", event.removed); console.log("Layer moved: ", event.moved); });
allTables Collection<Layer>readonly inherited
起始版本: GeoScene API for JavaScript 4.22

地图层次结构中任意位置的表的拼合集合。这将包含地图表中的各个以及任何图层组表。为了将表识别为表,FeatureLayer 属性必须返回 true

目前,仅识别要素图层表。

要访问空间图层,请改用 allLayers 属性。

示例代码:
// 其中 isTable = true 的要素图层。
const foundTable = map.allTables.find(function(table) { // 查找标题为"US Counties"的表格。
return table.title === "US Counties"; });
applicationProperties ApplicationProperties
起始版本: GeoScene API for JavaScript 4.22

应用程序属性包含 WebMap 的查看属性。

authoringApp String
起始版本: GeoScene API for JavaScript 4.22

创作 WebMap 的应用程序的名称。

authoringAppVersion String
起始版本: GeoScene API for JavaScript 4.22

创作 WebMap 的应用程序的版本。

自动转换自 String|Object

指定地图的底图。底图是一组切片图层,用于为 MapView 或 SceneView 以及地图中的其他业务图层提供地理上下文。

此值可以是底图的实例,也可以是下表中列出的字符串之一。

使用这些底图需要有效的 GeoScene Enterprise 许可

tianditu-vector中国地图彩色版
tianditu-image中国地图灰色版
geoscene-blue中国地图蓝黑版
geoscene-warm中国地图暖色版
示例代码:
// 在构造函数中设置底图
const map = new Map({ basemap: "tianditu-image" }); // 创建地图实例后设置底图
map.basemap = "tianditu-vector";

一组已保存的地理范围,允许最终用户快速导航到感兴趣的特定区域。

declaredClass Stringreadonly inherited
起始版本: GeoScene API for JavaScript 4.22

类名。类的名称声明格式为 geoscene.folder.className

起始版本: GeoScene API for JavaScript 4.22

可编辑图层的集合。如果图层具有编辑功能,并且与图层进行身份验证的用户具有编辑权限,则图层被视为可编辑。

起始版本: GeoScene API for JavaScript 4.22

将 web 地图配置为楼层感知地图时,该地图将定义 floorInfo 属性。楼层感知地图是包含表示平面图要素的室内 GIS 数据的地图。楼层信息必须至少包含关卡层设施层属性。站点层属性是可选的。

自动转换自 String|Object

指定地图的表面属性。在 MapView 中,当配置文件包含 ElevationProfileLineGround 时,ElevationProfile 微件将使用此属性。在 3D SceneView 中,它使用一组 ElevationLayer 在地图表面上渲染现实世界中的地形或地形变化。

此值可以是 Ground 的实例,也可以是以下字符串之一:

地面不能设置为nullundefined,它保证始终包含 Ground 类型的实例。通过将地面属性设置为新的空地面实例或移除所有地面图层,可以从地面上移除高程。nullundefined

示例:
示例代码:
// 使用世界高程服务
const map = new Map({ basemap: "tianditu-image", ground: "world-elevation" });
// 创建具有由自定义高程图层覆盖的世界高程图层的地图
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-image", ground: new Ground({ layers: [ worldElevation, customElevation ] }) });
initialViewProperties InitialViewPropertiesautocast

WebMap 的初始视图。此对象包含视点空间参考等属性,这些属性应在 WebMap 加载时应用于视图。

自动转换自 Layer[]

业务图层的集合。此属性包含可以查询、分配不同渲染、分析等业务图层,例如 FeatureLayersWebTileLayers 和 GraphicsLayers。它不包括底图

图层是表示真实世界现象的一个或多个要素或图形的集合。每个要素都包含一个符号地理数据,允许其在地图上以具有空间上下文的图形进行渲染。图层中的要素还可能包含数据属性,这些属性提供可在弹出窗口中查看并用于渲染图层的附加信息。

可以使用 add() 或 addMany() 方法在构造函数中添加图层,也可以使用 add() 或 addMany() 直接添加到图层集合中。

在 3D 模式下,对于在地形上渲染的图层,图层的顺序还取决于图层的类型。平铺图层(VectorTileLayerWebTileLayerWMTSLayer)始终按图层集合中指定的相同顺序首先绘制。动态图层(MapImageLayer影像图层WMSLayer 和具有高程模式的基于要素的图层on-the-ground)将使用图层集合中的顺序在顶部进行渲染。

个图层只能添加到一个父图层中。无法将同一图层添加到多个地图群组图层。如果尝试这样做,图层将自动从其当前父级中移除,并放置在新的父级中。

let layer = new GraphicsLayer();
// 图层属于map1
map1.layers.add(layer); // 图层属于map2 // 并隐式地执行: map1.layers.remove(layer)
map2.layers.add(layer);

要访问要素图层中的表,请使用 Map 或 WebMap 类中的tables属性。

示例代码:
// 使用数组在 Map 的构造函数中添加图层
let fl = new FeatureLayer(url); let gl = new GraphicsLayer(); let map = new Map({ layers: [fl, gl] }); // 使用add()添加图层 map.addMany([fl, gl]); // 添加图层集合 map.layers.addMany([fl, gl]); // 使用push方法向图层集合添加图层 map.layers.push(fl, gl);
loaded Booleanreadonly

指示实例是否已加载。当值为true时,可以访问对象的属性。创建 WebMap 的图层和底图时,将视为 WebMap 已加载,但尚未加载。

默认值:false
loadError Errorreadonly

如果在加载时发生错误,则返回 Error 对象。

默认值:null
loadStatus Stringreadonly

表示加载操作的状态。

描述
not-loaded 该对象的资源尚未加载。
loading 该对象的资源正在加载。
loaded 该对象的资源已正确加载。
failed 对象的资源加载失败。 有关详细信息,请参阅 loadError

可选值:"not-loaded"|"loading"|"failed"|"loaded"

默认值:not-loaded
portalItem PortalItemautocast

从中加载 WebMap 的门户项目。

presentation Object

提供多张幻灯片。每张幻灯片都有不同的"标题"、"范围"、"底图"、"图层"等。

sourceVersion Objectreadonly
起始版本: GeoScene API for JavaScript 4.1

从中读取 WebMap 的源文档的版本。WebMap 必须为 2.x 版才能加载到应用程序中。

属性:
major Number

WebMap 的主要版本。

minor Number

WebMap 的主要版本。

自动转换自 Layer[]

图层实例的集合,这些实例是保存在地图和/或 Web 地图中的表。为了使表被识别为这样,FeatureLayer 的 isTable 属性必须返回true。可以通过以下选项之一创建表:

  • 将 URL 引用到要素服务中的表。
  • 使用 Layer.fromGeoSceneServerUrl 方法创建要素图层,并使用要素图层的 isTable 属性确认该图层是表。这可以是要素服务或要素集合。
  • 使用 Layer.fromPortalItem 方法创建要素图层,并使用要素图层的 isTable 属性确认该要素图层是表。这可以是要素服务或要素集合。
  • 创建内存中、非空间的客户端要素图层。

从 4.17 开始,可以将要素服务中的非空间表保存到 WebMap,但尚不支持内存中(要素集合)表。

尚不支持在 GroupLayer 中保留表。如果需要,请将它们添加到地图和/或 Web 地图中。

目前,仅识别要素服务要素图层

要访问空间图层,请使用 Map 或 WebMap 类中的layers属性。

示例:
示例代码:
// 此代码段显示如何将表添加到地图的表集合中。
// 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" }); // 添加要素图层到地图 map.add(featureLayer); // 为了将表存储在地图的表集合中,请加载表并确认其类型正确。 table.load().then(function() { // Add the table to the collection map.tables.add(table); console.log("Table is added to map's table collection"); });
// 此代码段显示如何将表保存到现有 web 地图
// FeatureLayer.isTable = true const table = new FeatureLayer({ url: "https://services.arcgis.com/V6ZHFr6zdgNZuVG0/arcgis/rest/services/Crash_details_table/FeatureServer/0" }); // 创建WebMap实例 const webmap = new WebMap({ portalItem: { id: webmapId } }); // webmap准备就绪后,加载表并将其添加到webmap
webmap.when(function() { table.load().then(function() { console.log("Adding table"); // 将表添加到 web 地图的表集合
webmap.tables.add(table); }); }); // 调用更新从 web 地图上的更新并传入现有视图
webmap.updateFrom(view).then(function() { // 在 web 地图上调用 saveAs(或保存)
webmap.saveAs({ // 转换成 new PortalItem() title: "New WebMap" }); });
// 此代码段演示如何将内存中表添加到地图
// 创建包含字段信息的对象数组
const fields = [{ name: "ObjectID", alias: "ObjectID", type: "oid" }, { name: "tree_type", alias: "Tree type", type: "string" }, { name: "species", alias: "Species", type: "string" }]; // 创建图形保存属性信息数组
const graphics = [{ attributes: { "tree_type": "deciduous", "species": "maple", "ObjectID": 2 } }, { attributes: { "tree_type": "coniferous", "species": "pine", "ObjectID": 3 } }]; // 创建要素图层(要素集合)表
const table = new FeatureLayer({ fields: fields, objectIdField: "ObjectID", source: graphics }); // 检查地图何时准备就绪并加载表
map.when(function() { table.load().then(function() { console.log("Adding table"); map.tables.add(table); }); });
thumbnailUrl String
起始版本: GeoScene API for JavaScript 4.22

用于 web 地图的缩略图的 URL。将默认thumbnailUrl为与 web 地图关联的门户项目中的缩略图 URL。可通过更改缩略图 URL 并保存 web 地图来更新 web 地图的缩略图。使用 updateFrom 从指定视图自动更新缩略图。

示例代码:
webmap.updateFrom(view)
  .then(function() {
    return webmap.save();
  })
  // 缩略图将根据 web 地图的当前范围进行更新
.then(function(portalItem) { console.log("Saved to portal", portalItem.id); }) .catch(function(error) { console.error("Error saving to portal", error); });
utilityNetworks Collection<UtilityNetwork>

实用程序网络对象包含保存在 web 地图上的实用程序网络的集合。

widgets Widgets

小部件对象包含向用户公开的小部件。

方法列表

展示继承方法 隐藏继承方法
属性 返回值类型 描述
更多信息

将图层添加到图层集合

更多信息Map
更多信息

将图层或图层数组添加到图层集合中。

更多信息Map
更多信息

销毁 web 地图和任何关联的资源,包括其图层底图地面门户项目

更多信息WebMap
Layer更多信息

返回基于给定图层 ID 的图层。

更多信息Map
SearchTable更多信息

返回基于给定表 ID 的表。

更多信息Map
*更多信息

创建此类的新实例,并使用从 GeoScene 产品生成的 JSON 对象的值对其进行初始化。

更多信息WebMap
Boolean更多信息

isFulfilled() 可用于验证创建类的实例是否已完成(无论成功或失败)。

更多信息WebMap
Boolean更多信息

isRejected() 可用于验证创建类的实例是否失败。

更多信息WebMap
Boolean更多信息

isResolved() 可用于验证创建类的实例是否成功。

更多信息WebMap
Promise更多信息

触发 WebMap 实例的加载。

更多信息WebMap
Promise<WebMap>更多信息

加载与 web 地图关联的所有外部可加载资源。

更多信息WebMap
Layer更多信息

从图层集合中删除指定的图层。

更多信息Map
Layer[]更多信息

删除所有图层。

更多信息Map
Layer[]更多信息

删除指定的图层。

更多信息Map
Layer更多信息

更改图层顺序。

更多信息Map
Promise<PortalItem>更多信息

将 web 地图保存到其关联的门户项目中。

更多信息WebMap
Promise<PortalItem>更多信息

将 web 地图保存到新的门户项目

更多信息WebMap
Promise更多信息

更新与视图相关的 WebMap 的属性。

更多信息WebMap
Promise更多信息

when() 创建类的实例后,会被执行一次。

更多信息WebMap

方法详细说明

add(layer, index)inherited

将图层添加到图层集合。调用此方法时,将发出更改前添加前添加后更改后更改事件。

参数:
layer Layer|Promise

图层或解析为要添加到图层集合中的图层的承诺。

index Number
optional

可以在图层集合中的指定索引处添加图层。如果未指定索引或指定的索引大于当前图层数,则该图层将自动追加到图层集合中的图层列表中,并且索引将归一化。

示例:
示例代码:
// 可以使用 add() 和 push 方法
// 将图层添加到图层集合
// 使用 add 将图层添加到图层集合
map.add(layer); // 在图层集合的末尾添加图层
map.layers.push(layer);
addMany(layers, index)inherited

将图层或图层数组添加到图层集合中。调用此方法时,将发出更改前添加前添加后更改后更改事件。

图层集合上的 push() 方法也可用于添加一个或多个图层。

参数:
layers Layer[]

要添加到图层集合中的图层。

index Number
optional

可以在图层集合中的指定索引处添加图层。如果未指定索引或指定的索引大于当前图层数,则该图层将自动追加到图层集合中的图层列表中,并且索引将归一化。

示例:
示例代码:
// 可以使用 add() 和 push 方法
// 将图层添加到图层集合
// 使用 add 将图层添加到图层集合
map.addMany([layer, layer2]); // 在图层集合的末尾添加图层
map.layers.push(layer, layer2);
destroy()
起始版本: GeoScene API for JavaScript 4.22

销毁 web 地图和任何关联的资源,包括其图层底图地面门户项目。一旦地图被破坏,这些就无法再使用。要防止这些对象被销毁,请在调用destroy()之前将其从 web 地图中移除。

// 通过从 web 地图中移除图层来防止图层被破坏
const layers = webmap.layers.removeAll(); // 通过从 web 地图中移除表来防止表被销毁
const tables = webmap.tables.removeAll(); // 从 web 地图中取消设置底图,以便不将其销毁
const basemap = webmap.basemap; webmap.basemap = null; // 从 web 地图中取消设置地面,使其不会被破坏
const ground = webmap.ground; webmap.ground = null; // 从 web 地图中取消设置门户项,以便不将其销毁
const portalItem = webmap.portalItem; webmap.portalItem = null; // 销毁 web 地图和任何剩余的关联资源
webmap.destroy();
示例:
findLayerById(layerId){Layer}inherited

返回基于给定图层 ID 的图层。

参数:
layerId String

分配给图层的 ID。

返回值:
类型 描述
Layer 返回请求的图层对象。
findTableById(tableId){SearchTable}inherited
起始版本: GeoScene API for JavaScript 4.22

返回基于给定表 ID 的表。

参数:
tableId String

分配给表的 ID。

返回值:
类型 描述
SearchTable 返回请求的表对象。
fromJSON(json){*}static
起始版本: GeoScene API for JavaScript 4.22

创建此类的新实例,并使用从 GeoScene 产品生成的 JSON 对象的值对其进行初始化。传递到输入参数中的json对象通常来自对 REST API 中的查询操作的响应或来自其他 GeoScene 产品的 toJSON() 方法。如果在视图外部使用 WebMap,则必须显式调用 load() 以与其资源进行交互。有关何时以及如何使用此功能的详细信息和示例,请参阅指南中的使用 fromJSON() 主题。

参数:
json Object

实例的 JSON 表示形式,采用 GeoScene 格式。有关将 web 地图序列化为 JSON 的更多详细信息,请参阅 web 地图规范。

返回值:
类型 描述
* 返回一个该类的新实例。
示例代码:
//  通过url 检索 WebMap JSON 并将其反序列化为 WebMap API 实例
require(["geoscene/request", "geoscene/WebMap"], function(geosceneRequest, WebMap) {
  geosceneRequest("https://domain/url/to/webmap.json").then(function(json) {
    const webmap = WebMap.fromJSON(json);

    const view = new MapView({
      map: webmap,
      container: "viewDiv"
    });
  });
});
isFulfilled(){Boolean}

isFulfilled() 可用于验证创建类的实例是否已完成(无论成功或失败)。 如果已完成,将会返回true

返回值:
类型 描述
Boolean 指示创建类的实例是否已完成(无论成功或失败)。
isRejected(){Boolean}

isRejected() 可用于验证创建类的实例是否失败。 如果失败, 将会返回 true

返回值:
类型 描述
Boolean 指示是否已拒绝创建类的实例。
isResolved(){Boolean}

isResolved() 可用于验证创建类的实例是否成功。 如果成功, 将会返回 true

返回值:
类型 描述
Boolean 指示是否已解析创建类的实例。
load(){Promise}

触发 WebMap 实例的加载。

当 WebMap 的业务图层底图完全创建时,将被视为已加载。使用 portalItem 创建时,将首先load()获取其数据以创建内容,否则会立即解析。

将 WebMap 实例添加到其地图属性时,MapView 会自动调用该load()方法以便它可以显示在视图中并加载每个单独的图层。如果在视图外部使用 WebMap(例如用于预加载视图),则必须显式调用load()以与其资源进行交互。load()load()

返回值:
类型 描述
Promise 当WebMap loaded 时返回。
示例:
示例代码:
require([
  "geoscene/WebMap"
], function(
  WebMap
) {

  const map = new WebMap({
    portalItem: {
      id: "3a9976baef9240ab8645ee25c7e9c09f"
    }
  });

  map.load()
    .then(function() {
      // 加载底图以创建其图层
return map.basemap.load(); }) .then(function() { // 抓取所有图层并加载它们
const allLayers = map.allLayers; const promises = allLayers.map(function(layer) { return layer.load(); }); return Promise.all(promises.toArray()); }) .then(function(layers) { // 每层负载承诺随层一起解析
console.log("all " + layers.length + " layers loaded"); }) .catch(function(error) { console.error(error); }); });
loadAll(){Promise<WebMap>}
起始版本: GeoScene API for JavaScript 4.22

加载与 web 地图关联的所有外部可加载资源。对于 web 地图,这将加载地面、底图和图层。

返回值:
类型 描述
Promise<WebMap> 在加载所有可加载资源后返回。如果至少一个可加载资源无法加载,则拒绝。
示例:
示例代码:
// 加载所有资源,但如果其中一个或多个资源无法加载,则忽略
webmap.loadAll() .catch(function(error) { // 忽略任何失败的资源
}) .then(function() { console.log("All loaded"); });
remove(layer){Layer}inherited

从图层集合中删除指定的图层。调用此方法时,将发出更改前删除前删除后更改后更改事件。

参数:
layer Layer

要从图层集合中删除的图层。

返回值:
类型 描述
Layer 返回从图层集合中删除的图层。
removeAll(){Layer[]}inherited

删除所有图层。调用此方法时,将发出更改前删除前删除后更改后更改事件。

返回值:
类型 描述
Layer[] 返回从图层集合中删除的图层。
removeMany(layers){Layer[]}inherited

删除指定的图层。调用此方法时,将发出更改前删除前删除后更改后更改事件。

参数:
layers Layer[]

要从图层集合中删除的图层数组。

返回值:
类型 描述
Layer[] 返回从图层集合中删除的图层。
reorder(layer, index){Layer}inherited

更改图层顺序。添加的第一个图层始终是基础图层,即使其顺序已更改。调用此方法时,将发出更改事件。

在 3D 模式下,对于在地形上渲染的图层,图层的顺序还取决于图层的类型。平铺图层(VectorTileLayerWebTileLayerWMTSLayer)始终按图层集合中指定的相同顺序首先绘制。动态图层(MapImageLayer影像图层WMSLayer 和具有高程模式的基于要素的图层on-the-ground)将使用图层集合中的顺序在顶部进行渲染。

参数:
layer Layer

要移动的图层。

index Number

用于放置图层的索引位置。最底部图层的索引为0 。

返回值:
类型 描述
Layer 返回已移动的图层。
save(options){Promise<PortalItem>}
起始版本: GeoScene API for JavaScript 4.22

将 web 地图保存到其关联的门户项目中。门户项目必须已存在且有效。这是一种方便的方法,它将使用更新将 web 地图存储在项目中。将根据 web 地图规范标准保存 web 地图

在保存当前视图属性之前,使用 updateFrom 将当前视图属性存储在 web 地图中。

请注意,这会将 web 地图保存到其现有项目中。根据 web 地图的共享方式,不拥有 web 地图的用户或许能够对其进行修改。要将现有 web 地图另存为登录到门户实例的用户拥有的新项目,请使用 saveAs()

如果 web 地图在保存之前尚未加载,则会自动加载。

已知限制

  • 对于 StreamLayer,以下规则将适用:
    • 不会保存添加到 web 地图的这些类型的任何新图层。
    • 对于现有图层,仅保存对以下属性的修改:混合模式、图例启用、最大比例、最小比例、不透明度、标题、可见性。
  • 当前无法保存要素集合和多层要素集合。
参数:
options Object
optional

其他选项。

规范:
ignoreUnsupported Boolean
optional

当值为true时,即使 web 地图包含不受支持的内容(图层、渲染器、符号),也会进行保存。将不会保存任何不受支持的内容,并且从门户项目重新加载 web 地图时,Web 地图的外观可能会有所不同。

返回值:
类型 描述
Promise<PortalItem> 当项目已成功保存或以其他方式被拒绝时,使用 PortalItem 实例解析的承诺。
示例:
示例代码:
webmap.updateFrom(view)
  .then(function() {
    return webmap.save();
  })
  .then(function(portalItem) {
    console.log("Saved to portal", portalItem.id);
  })
  .catch(function(error) {
    console.error("Error saving to portal", error);
  });
saveAs(portalItem, options){Promise<PortalItem>}
起始版本: GeoScene API for JavaScript 4.22

将 web 地图保存到新的门户项目。如果保存已成功完成,则保存的门户项目将在 WebMap 的 portalItem 属性中设置。这是一种方便的方法,它将创建新的 PortalItem 并使用 PortalUser.addItem() 将 web 地图存储在门户中。

在保存当前视图属性之前,使用 updateFrom 将当前视图属性存储在 web 地图中。

请注意,这始终会将 web 地图另存为登录到执行该saveAs()方法的门户实例的用户所拥有的新门户项目。如果要修改现有项目而不更改其所有权,请使用 save()

如果 web 地图在保存之前尚未加载,则会自动加载。

已知限制

  • 对于 StreamLayer,以下规则将适用:
    • 不会保存添加到 web 地图的这些类型的任何新图层。
    • 对于现有图层,仅保存对以下属性的修改:混合模式、图例启用、最大比例、最小比例、不透明度、标题、可见性。
  • 当前无法保存要素集合和多层要素集合。
参数:
规范:
portalItem PortalItem autocast
自动转换自 Object

要将 web 地图保存到的新门户项目。

门户项目属性(如标题或描述)需要在项目上显式设置,并且不会从当前关联的 webmap 门户项目(如果有)中自动复制。

options Object
optional

其他保存选项。

规范:
folder PortalFolder
optional

要在其中保存项目的文件夹。

ignoreUnsupported Boolean
optional

允许保存 web 地图,即使其中包含不受支持的内容(图层、渲染器、符号)。将不会保存任何不受支持的内容,并且从门户项目重新加载 web 地图时,Web 地图的外观可能会有所不同。

返回值:
类型 描述
Promise<PortalItem> 当项目已成功保存或以其他方式被拒绝时,使用 PortalItem 实例解析的承诺。
示例:
示例代码:
const webmap = new WebMap();
// 使用 updateFrom 存储当前视图属性在webmap保存前
webmap.updateFrom(view);
webmap.saveAs({
  // 转换成 new PortalItem()
  title: "New WebMap"
});
updateFrom(view, options){Promise}
起始版本: GeoScene API for JavaScript 4.22

更新与视图相关的 WebMap 的属性。通常应在保存 web 地图之前调用此操作。以下属性将从视图中更新::

  1. InitialViewProperties.spatialReference

根据提供的选项,还会更新以下属性:

  1. InitialViewProperties.viewpoint 的旋转缩放目标几何属性
  2.  PortalItemthumbnail 
参数:
规范:
view MapView

要从中进行更新的视图。

options Object
optional

更新选项。

规范:
backgroundExcluded Boolean
optional

当值为true时,不会针对 web 地图更新视图的背景。默认值false表示如果有背景,则将更新 web 地图的背景。

viewpointExcluded Boolean
optional

当值为true时,视图的初始视点将不会针对 web 地图进行更新。默认为false,表示将更新 web 地图的视点。必须设置scalePreservedtrue是否应为 web 地图更新视图的比例。

scalePreserved Boolean
optional

当值为true时,将更新 web 地图的视图比例。默认值为false表示不会为 web 地图更新视图的比例。当viewpointExcludedtrue时,将忽略它。

thumbnailExcluded Boolean
optional

当值为true时,不会更新 web 地图的缩略图。默认为false表示将更新 web 地图的缩略图。

thumbnailSize Object
optional

缩略图的大小。默认值为 600x400(比率 1.5:1)。请注意,缩略图大小当前可能不大于视图的大小。

规范:
width Number

缩略图的宽度。

height Number

缩略图的高度。

widgetsExcluded Boolean
optional

当值为true时,web 地图的微件属性将不会更新。当值为false时,分配给视图的第一个 TimeSlider 的定义将用于更新 WebMap.widgets 属性。缺省值为false 。

返回值:
类型 描述
Promise 在更新完成后解决。
示例:
when(callback, errback){Promise}
起始版本: GeoScene API for JavaScript 4.22

when() 创建类的实例后,会被执行一次。该方法接受两个参数: callback 函数和 errback 函数。 callback 在类的实例加载时执行。 如果类的实例无法加载,则执行 errback

参数:
callback Function
optional

当 Promise 成功时,该函数将被调用。

errback Function
optional

当 Promise 失败时,该函数将被调用。

返回值:
类型 描述
Promise 返回回调结果的新promise,可用于 链接其他函数。
示例代码:
// 尽管此示例使用 MapView,但任何作为 Promise 的类实例都可以以相同的方式使用 when()
let view = new MapView();
view.when(function(){
  // 当 Promise resolved 时,函数将被执行
}, function(error){
  // 当 Promise 通过 rejected 抛错时,这个函数将被执行
});

类型定义

FloorFilter Object

楼层过滤由可配置的楼层过滤器控制。这些配置将作为"楼层过滤器"微件保存到 web 地图中。

属性:
enabled Boolean

指示 FloorFilter 是否处于活动状态,并根据 FloorFilter 选择过滤显示的内容。

longNames Boolean

指示级别列表是否显示 longNameField 中的长名称。

minimized Boolean

指示楼层筛选器是否已最小化以仅显示级别列表。

pinnedLevels Boolean

指示是否已固定楼层筛选器的级别部分以显示级别列表。

site String

包含楼层筛选器中最初选定站点的站点 ID。

facility String

包含楼层过滤器中最初所选设施的设施 ID。

level String

包含最初选定楼层的级别 ID,该 ID 在按图层配置的楼层感知属性过滤图层时使用。

TimeSlider Object

时间动画由可配置的时间滑块控制。这些配置将作为时间滑块微件保存到 web 地图中。

属性:
currentTimeExtent TimeExtent

时间滑块的当前时间范围。有关详细信息,请参阅时间滑块微件的 timeExtent 属性。

fullTimeExtent TimeExtent

整个滑块的时态范围。有关详细信息,请参阅时间滑块微件的 fullTimeExtent 属性。

loop Boolean

当值为true时,时间滑块将循环播放其动画。

numStops Number

停靠点数。它将时间滑块的 fullTimeExtent 划分为相等的部分。查看时间滑块微件的停止点和停靠点计数属性。

numThumbs Number

拇指计数。查看时间滑块微件的模式时间消耗属性。此值默认为 1。

stops Date[]

时间滑块小部件的日期数组。可用于创建间隔不规则的停靠点。查看时间滑块微件的停靠点"按时间停止"属性。

stopDelay Number

动画步骤之间的时间速率(以毫秒为单位)。查看时间滑块 件的 playRate 属性。此值默认为 1000。

stopInterval TimeInterval

在 TimeInterval 对象的时间滑块上定义定期间隔的停靠点。查看时间滑块微件的停靠点和 StopsByInterval 属性。

Widgets Object

微件对象包含向用户公开的微件。

属性:
timeSlider TimeSlider

时间动画由可配置的时间滑块控制。这些配置将作为"时间滑块"微件保存到 web 地图中。

floorFilter FloorFilter

楼层过滤由可配置的楼层过滤器控制。这些配置将作为 FloorFilter 微件保存到 web 地图中。

Your browser is no longer supported. Please upgrade your browser for the best experience. See our browser deprecation post for more details.