WebMap

AMD: require(["geoscene/WebMap"], (WebMap) => { /* code goes here */ });
ESM: import WebMap from "@geoscene/core/WebMap";
类: geoscene/WebMap
继承于:WebMap Map Accessor
起始版本:GeoScene Maps SDK for JavaScript 4.0

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

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

const webmap = new WebMap({
  portalItem: { // autocasts as new PortalItem()
    id: "e691172598f04ea8881cd2a4adaa45ba"
  }
});

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

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

const webmap = new WebMap({
  portalItem: { // autocasts as new PortalItem()
    id: "f701172599f04ea8781de2a4adzz46ab"
  }
});

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

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

已知限制

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

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

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

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

构造函数

new WebMap(properties)
参数
properties Object
optional

有关可能传递给构造函数的所有属性的列表,请参见属性

示例
// Typical usage
const map = new WebMap({
  portalItem: {
    id: "e691172598f04ea8881cd2a4adaa45ba"
  }
});

属性概述

可以设置、检索或侦听任何属性。请参阅使用属性主题。
显示继承属性 隐藏继承属性
名称 类型 描述
Collection<Layer>

地图中所有图层的扁平化集合。

更多详情
地图
Collection<Layer>

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

更多详情
地图
ApplicationProperties

applicationProperties 包含 WebMap 的查看属性。

更多详情
WebMap
String

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

更多详情
WebMap
String

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

更多详情
WebMap
Basemap

指定地图的底图。

更多详情
地图
Collection<Bookmark>

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

更多详情
WebMap
String

类的名称。

更多详情
Accessor
Collection<(FeatureLayer|SceneLayer|SubtypeGroupLayer)>

可编辑图层的集合。

更多详情
地图
MapFloorInfo

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

更多详情
WebMap
GeotriggersInfo

与 Geotriggers 列表相关的信息。

更多详情
WebMap
Ground

指定地图的表面属性。

更多详情
地图
InitialViewProperties

WebMap 的初始视图。

更多详情
WebMap
Collection<Layer>

业务图层的集合。

更多详情
地图
Boolean

指示实例是否已加载。

更多详情
WebMap
Error

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

更多详情
WebMap
String

表示 load 操作的状态。

更多详情
WebMap
PortalItem

从中加载 WebMap 的门户项目。

更多详情
WebMap
Object

提供多张幻灯片。

更多详情
WebMap
Object

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

更多详情
WebMap
Collection<Layer>

图层实例的集合,这些实例是保存在 MapWebMap 中的表。

更多详情
地图
String

用于 webmap 的缩略图的 URL。

更多详情
WebMap
Collection<UtilityNetwork>

utilityNetworks 对象包含保存在 web 地图上的 UtilityNetworks 的集合。

更多详情
WebMap
微件

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

更多详情
WebMap

属性详细信息

allLayers Collection<Layer>readonly inherited

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

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

若要访问表的扁平化集合,请改为使用 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);
});
allTables Collection<Layer>readonly inherited
起始版本: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.14

applicationProperties 包含 WebMap 的查看属性。

authoringApp String
起始版本:GeoScene Maps SDK for JavaScript 4.14

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

authoringAppVersion String
起始版本:GeoScene Maps SDK for JavaScript 4.14

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

自动转换自 String|Object

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

此值可以是 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";

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

declaredClass Stringreadonly inherited
起始版本:GeoScene Maps SDK for JavaScript 4.7

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

起始版本:GeoScene Maps SDK for JavaScript 4.20

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

起始版本:GeoScene Maps SDK for JavaScript 4.19

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

geotriggersInfo GeotriggersInfoautocast
起始版本:GeoScene Maps SDK for JavaScript 4.24

与 Geotriggers 列表相关的信息。

自动转换自 String|Object

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

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

  • world-elevation ,用于使用 Terrain3D 服务的默认地面实例。
  • world-topobathymetry ,用于使用 TopoBathy3D 服务将表面高程和测深相结合的地面实例。

地面不能设置为 nullundefined,要保证始终包含 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 ]
  })
});
initialViewProperties InitialViewPropertiesautocast

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

自动转换自 Layer[]

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

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

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

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

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

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);

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

示例
// 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

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

默认值:false
loadError Errorreadonly

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

默认值:null
loadStatus Stringreadonly

表示 load 操作的状态。

描述
not-loaded 对象的资源尚未加载。
loading 对象的资源当前正在加载。
loaded 对象的资源已加载且未出现错误。
failed 无法加载对象的资源。有关更多详情,请参阅 loadError

可能值"not-loaded"|"loading"|"failed"|"loaded"

默认值:not-loaded

从中加载 WebMap 的门户项目。

presentation Object

提供多张幻灯片。每张幻灯片都有不同的 "title"、"extent"、"basemap"、"layers" 等。

sourceVersion Objectreadonly
起始版本:GeoScene Maps SDK for JavaScript 4.1

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

属性
major Number

WebMap 的主要版本。

minor Number

WebMap 的次要版本。

自动转换自 Layer[]

图层实例的集合,这些实例是保存在 MapWebMap 中的表。为了以此方式识别表,FeatureLayer 的 isTable 属性必须返回 true。可以通过以下选项之一创建表:

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

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

尚不支持在 GroupLayer 中保留表。如果需要,请将它们添加到 MapWebMap 中。

  • 目前,仅识别要素服务要素图层
  • 要访问空间图层,请使用 MapWebMap 类中的 layers 属性。
另请参阅
示例
// 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.14

用于 webmap 的缩略图的 URL。默认情况下,thumbnailUrl 将是与 webmap 关联的门户项目的缩略图 URL。可通过更改缩略图 URL 并保存 webmap 来更新 webmap 的缩略图。使用 updateFrom 从指定视图自动更新缩略图。

示例
webmap.updateFrom(view)
  .then(function() {
    return webmap.save();
  })
  // thumbnail will be updated based on current extent of webmap
  .then(function(portalItem) {
    console.log("Saved to portal", portalItem.id);
  })
  .catch(function(error) {
    console.error("Error saving to portal", error);
  });
utilityNetworks Collection<UtilityNetwork>

utilityNetworks 对象包含保存在 web 地图上的 UtilityNetworks 的集合。

widgets Widgets

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

方法概述

显示继承的方法 隐藏继承的方法
名称 返回值类值 描述

将图层添加到图层集合

更多详情
地图

添加一个或多个与对象的生命周期相关联的句柄。

更多详情
Accessor

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

更多详情
地图

销毁 webmap 和任何相关资源,包括其 layersbasemapgroundtablesportalItem

更多详情
WebMap
Layer

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

更多详情
地图
Layer

根据给定的表 ID 返回一个表。

更多详情
地图
*

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

更多详情
WebMap
Boolean

如果存在指定的句柄组,则返回 true。

更多详情
Accessor
Boolean

isFulfilled() 可用于验证创建类的实例是否已完成 (已解决或已拒绝)。

更多详情
WebMap
Boolean

isRejected() 可用于验证创建类的实例是否被拒绝。

更多详情
WebMap
Boolean

isResolved() 可用于验证创建类的实例是否已解决。

更多详情
WebMap
Promise

触发 WebMap 实例的加载。

更多详情
WebMap
Promise<WebMap>

加载与 webmap 关联的所有外部可加载资源。

更多详情
WebMap
Layer

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

更多详情
地图
Layer[]

移除所有图层。

更多详情
地图

移除对象拥有的句柄组。

更多详情
Accessor
Layer[]

移除指定的图层。

更多详情
地图
Layer

更改图层顺序。

更多详情
地图
Promise<PortalItem>

将 webmap 保存到其关联的门户项目。

更多详情
WebMap
Promise<PortalItem>

将 webmap 保存到新的门户项目

更多详情
WebMap
Promise

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

更多详情
WebMap
Promise

一旦创建了类的实例,就可以使用when()

更多详情
WebMap

方法详细说明

add(layer, index)inherited

将图层添加到图层集合。调用此方法时将触发 before-changesbefore-addafter-addafter-changeschange 事件。

参数

图层或解析为图层以添加到图层集合的 promise。

index Number
optional

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

另请参阅
示例
// 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-changesbefore-addafter-addafter-changeschange 事件。

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

参数
layers Layer[]

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

index Number
optional

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

另请参阅
示例
// 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

销毁 webmap 和任何相关资源,包括其 layersbasemapgroundtablesportalItem。一旦地图损坏,则无法再使用这些内容。为防止这些对象被销毁,请在调用 destroy() 之前将它们从 webmap 中移除。

// prevent the layers from being destroyed by removing them from the webmap
const layers = webmap.layers.removeAll();

// prevent the tables from being destroyed by removing them from the webmap
const tables = webmap.tables.removeAll();

// unset basemap from the webmap so that it is not destroyed
const basemap = webmap.basemap;
webmap.basemap = null;

// unset ground from the webmap so that it is not destroyed
const ground = webmap.ground;
webmap.ground = null;

// unset portalItem from the webmap so that it is not destroyed
const portalItem = webmap.portalItem;
webmap.portalItem = null;

// destroy the webmap and any remaining associated resources
webmap.destroy();
另请参阅
findLayerById(layerId){Layer}inherited

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

参数
layerId String

分配给图层的 ID。

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

根据给定的表 ID 返回一个表。

参数
tableId String

分配给表的 ID。

返回
类型 描述
Layer 返回请求的表格对象。
fromJSON(json){*}static
起始版本:GeoScene Maps SDK for JavaScript 4.12

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

参数
json Object

GeoScene 格式实例的 JSON 表示。

返回
类型 描述
* 返回该类的新实例。
示例
// Retrieve a WebMap JSON by url and deserialize it into a WebMap API instance
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"
    });
  });
});
hasHandles(groupKey){Boolean}inherited
起始版本: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 指示创建类的实例是否已被拒绝。
isResolved(){Boolean}

isResolved() 可用于验证创建类的实例是否已解决。如果已解决,则返回 true

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

触发 WebMap 实例的加载。

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

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

返回
类型 描述
Promise 加载 WebMap 时解析。
另请参阅
示例
require([
  "geoscene/WebMap"
], function(
  WebMap
) {

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

  map.load()
    .then(function() {
      // load the basemap to get its layers created
      return map.basemap.load();
    })
    .then(function() {
      // grab all the layers and load them
      const allLayers = map.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);
    });
});
loadAll(){Promise<WebMap>}
起始版本:GeoScene Maps SDK for JavaScript 4.9

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

返回
类型 描述
Promise<WebMap> 当所有可加载资源都已加载时解析。如果至少有一个可加载资源未能加载,则拒绝。
另请参阅
示例
// Load all resources but ignore if one or more of them failed to load
webmap.loadAll()
  .catch(function(error) {
    // Ignore any failed resources
  })
  .then(function() {
    console.log("All loaded");
  });
remove(layer){Layer}inherited

从图层集合中移除指定的图层。调用此方法时将触发 before-changesbefore-removeafter-removeafter-changeschange 事件。

参数
layer Layer

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

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

移除所有图层。调用此方法时将触发 before-changesbefore-removeafter-removeafter-changeschange 事件。

返回
类型 描述
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");
removeMany(layers){Layer[]}inherited

移除指定的图层。调用此方法时将触发 before-changesbefore-removeafter-removeafter-changeschange 事件。

参数
layers Layer[]

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

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

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

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

参数
layer Layer

要移动的图层。

index Number

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

返回
类型 描述
Layer 返回被移动的图层。
save(options){Promise<PortalItem>}
起始版本:GeoScene Maps SDK for JavaScript 4.14

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

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

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

如果尚未加载,则会自动加载 webmap,然后再保存。

已知限制

  • 对于 StreamLayer,以下规则将适用:
    • 不会保存添加到 webmap 的这些类型的任何新图层。
    • 对于现有图层,仅保存对以下属性的修改:blendMode、legendEnabled、maxScale、minScale、opacity、title、visibility。
  • 当前无法保存要素集合和多图层要素集合。
参数
options Object
optional

附加选项。

规范
ignoreUnsupported Boolean
optional

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

返回
类型 描述
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 Maps SDK for JavaScript 4.14

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

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

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

如果尚未加载,则会自动加载 webmap,然后再保存。

已知限制

  • 对于 StreamLayer,以下规则将适用:
    • 不会保存添加到 webmap 的这些类型的任何新图层。
    • 对于现有图层,仅保存对以下属性的修改:blendMode、legendEnabled、maxScale、minScale、opacity、title、visibility。
  • 当前无法保存要素集合和多图层要素集合。
参数
规范
portalItem PortalItem autocast
自动转换自 Object

要将 webmap 保存到的新门户项目。

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

options Object
optional

其他保存选项。

规范
optional

保存项目的文件夹。

ignoreUnsupported Boolean
optional

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

返回
类型 描述
Promise<PortalItem> 当项目已成功保存或以其他方式拒绝时,使用 PortalItem 实例解析的承诺。
另请参阅
示例
const webmap = new WebMap();
// Use updateFrom to store the current view properties
// in the webmap before saving it
webmap.updateFrom(view);
webmap.saveAs({
  // autocasts as new PortalItem()
  title: "New WebMap"
});
updateFrom(view, options){Promise}
起始版本:GeoScene Maps SDK for JavaScript 4.14

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

  1. InitialViewProperties.spatialReference

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

  1. InitialViewProperties.viewpointrotationscaletargetGeometry 属性
  2. PortalItemthumbnail
参数
规范
view MapView

要从中进行更新的视图。

options Object
optional

更新选项。

规范
backgroundExcluded Boolean
optional

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

viewpointExcluded Boolean
optional

当为 true 时,视图的初始视点将不会针对 webmap 进行更新。默认为 false,表示将更新 webmap 的视点。如果应为 webmap 更新视图的比例,则必须将 scalePreserved 设置为 true

scalePreserved Boolean
optional

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

thumbnailExcluded Boolean
optional

当为 true 时,不会针对 webmap 更新缩略图。默认为 false,表示将更新 webmap 的缩略图。

thumbnailSize Object
optional

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

规范
width Number

缩略图的宽度。

height Number

缩略图的高度。

widgetsExcluded Boolean
optional

true 时,webmap 的 widgets 属性将不会更新。为 false 时,分配给 View 的第一个 TimeSlider 的定义将用于更新 WebMap.widgets 属性。默认值为 false

返回
类型 描述
Promise 在更新完成后解析。
另请参阅
when(callback, errback){Promise}
起始版本:GeoScene Maps SDK for JavaScript 4.6

一旦创建了类的实例,就可以使用when() 。此方法接受两个输入参数:callback 函数和 errback 函数。callback 在类的实例加载时执行。errback 在类的实例无法加载时执行。

参数
callback Function
optional

当 promise 解决时调用的函数。

errback Function
optional

当 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
});

类型定义

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

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

属性
currentTimeExtent TimeExtent

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

fullTimeExtent TimeExtent

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

loop Boolean

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

numStops Number

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

numThumbs Number

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

stops Date[]

时间滑块微件的日期数组。可用于创建间距不规则的停靠点。查看时间滑块微件的 stopsStopsByDates 属性。

stopDelay Number

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

stopInterval TimeInterval

根据 TimeInterval 对象定义时间滑块上间隔规则的停靠点。查看时间滑块微件的 stopsStopsByInterval 属性。

Widgets Object

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

属性
timeSlider TimeSlider

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

floorFilter FloorFilter

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

您的浏览器不再受支持。请升级您的浏览器以获得最佳体验。请参阅浏览器弃用帖子以获取更多信息