Basemap

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

概览

底图是一组图层,这些图层为地图或场景提供了地理上下文,其中包含地形要素、道路网络、建筑和标注等数据。这些要素可以使用适用于应用程序的不同样式表示,例如街道、地形或影像。

底图可以包含基础图层参考图层,基础图层包括一个或多个切片图层。参考图层显示在基础图层的顶部,例如可以用于在地形或街道的顶部显示标注。

MapView 中,底图的参考图层仅限于切片图层,而在 SceneView 中,它们也可以包含场景图层并用于显示 3D 内容。例如,3D 底图可以包括 3D 对象,如建筑物和树木,或要在 3D 中渲染的标注,可以覆盖在切片图层中的地形上,也可以在场景图层中使用广告牌。

创建底图

创建新的底图对象。底图可以从 PortalItem、从已知底图 ID创建,也可用于创建自定义底图。这些底图可以通过发布到自己的服务器的切片服务或第三方发布的切片服务创建。

// in this case the portalItem has to be a webmap
let basemap = new Basemap({
  portalItem: {
    id: "8dda0e7b5e2d4fafa80132d59122268c"  // WGS84 Streets Vector webmap
  }
});

// or create the basemap from a well known ID
Basemap.fromId("tianditu-vector");

// or create from a third party source
let basemap = new Basemap({
  baseLayers: [
    new WebTileLayer(...)
  ],
  referenceLayers: [
    new WebTileLayer(...)
  ],
});

设置 LOD

对底图使用动态服务时,应指定 MapView.constraints.lods 属性。通过在此属性中显式设置 lods 或通过 TileInfo 类的 create() 方法创建 lods 来执行此操作。此方法用于创建具有 lods 的预设属性的新 TileInfo 实例。有关详细信息,请参阅 MapView SDK 文档中的缩放和 LODs 部分。

// create a basemap from a dynamic mapserver
let basemap = new Basemap({
  baseLayers: [
    new MapImageLayer({
      url: "url to your dynamic MapServer",
      title: "Basemap"
    })
  ],
  title: "basemap",
  id: "basemap"
});

let map = new Map({
  basemap: basemap
});

// create a TileInfo instance using the default settings and
// pass its resulting LOD's to a MapView's constraints
// in this case, lods will match the GeoScene Online web mercator LODs
let view = new MapView({
  container: "viewDiv",
  map: map,
  constraints: {
    lods: TileInfo.create().lods
  }
});

等待加载

可以调用底图实例上的 when() 方法来执行只能在已加载底图后运行的进程。

另请参阅

构造函数

new Basemap(properties)
参数
properties Object
optional

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

属性概述

所有属性都可以设置、获取和监听。请参阅使用属性主题。
显示继承属性 隐藏继承属性
名称 类型 描述
Collection<Layer>

构成底图的切片图层集合

更多详情
Basemap
String

类的名称。

更多详情
Accessor
String

底图的ID,其他地方可以引用该ID调用底图

更多详情
Basemap
Boolean

判断底图实例是否已加载

更多详情
Basemap
Error

加载时发生的错误,返回 Error 对象。

更多详情
Basemap
String

load 操作的状态

更多详情
Basemap
Object[]

加载时发生的警告列表

更多详情
Basemap
PortalItem

门户项目对象

更多详情
Basemap
Collection<Layer>

显示在基础图层上的参考图层集合,可用于在地形或街道顶部显示标注。

更多详情
Basemap
SpatialReference

底图的空间参考

更多详情
Basemap
String

底图的缩略图URL

更多详情
Basemap
String

底图的标题

更多详情
Basemap

属性详细信息

构成底图的切片图层集合。

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

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

用于在其他位置引用底图时所引用的标识符。

示例
let customBasemap = new Basemap({
  baseLayers: [layers],
  title: "Custom Basemap",
  id: "myBasemap"
});
loaded Booleanreadonly

标识底图实例是否已加载。如果为 true,则可访问对象的所有属性。

默认值:false
loadError Errorreadonly

加载时发生的错误,返回 Error 对象

默认值:null
loadStatus Stringreadonly

load 操作的状态

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

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

默认值:not-loaded
loadWarnings Object[]readonly

加载时发生的警告列表

门户项目对象

referenceLayers Collection<Layer>

显示在基础图层上的参考图层集合,可用于在地形或街道顶部显示标注。在 MapView 中,底图的参考图层仅限于切片图层,而在 SceneView 中,它们也可以包含场景图层,并用于在 3D 中显示对象或标注。

spatialReference SpatialReferenceautocast
起始版本:GeoScene Maps SDK for JavaScript 4.14

底图的空间参考

使用 Geoscene 底图时,默认空间参考是 Web Mercator Auxiliary Sphere

thumbnailUrl String

底图的缩略图URL在 BasemapToggle 微件中使用,自定义底图时,此处指定的图像将显示在微件中。当用户单击图像时,地图的底图将切换为与图像关联的底图。

另请参阅
title String

底图的标题

方法概述

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

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

更多详情
Accessor

如果 load() 操作已在进行中,则取消它。

更多详情
Basemap
Basemap

创建此对象的深度克隆。

更多详情
Basemap

销毁底图和任何相关资源,包括其 layersportalItem

更多详情
Basemap
Basemap

熟知底图 ID 创建一个新的底图实例。

更多详情
Basemap
*

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

更多详情
Basemap
Boolean

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

更多详情
Accessor
Boolean

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

更多详情
Basemap
Boolean

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

更多详情
Basemap
Boolean

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

更多详情
Basemap
Promise

加载此类引用的资源。

更多详情
Basemap
Promise<Basemap>

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

更多详情
Basemap

移除对象拥有的句柄组。

更多详情
Accessor
Object

将此类的实例转换为其 GeoScene Portal JSON 表示。

更多详情
Basemap
Promise

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

更多详情
Basemap

方法详细说明

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

this.addHandles(handle);

// Destroy the object
this.destroy();
参数
handleOrHandles WatchHandle|WatchHandle[]

对象销毁后,标记为要移除的句柄。

groupKey *
optional

标识句柄应添加到的组的键。组中的所有句柄稍后都可使用 Accessor.removeHandles() 进行删除。如果未提供键,则句柄将被添加到默认组。

cancelLoad()

如果 load() 操作已在进行中,则取消它。

clone(){Basemap}

创建此对象的深度克隆。

返回
类型 描述
Basemap 调用此方法的 Basemap 实例的深度克隆。
destroy()
起始版本:GeoScene Maps SDK for JavaScript 4.17

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

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

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

// destroy the basemap and any remaining associated resources
basemap.destroy();
另请参阅
fromId(id){Basemap}static

熟知底图 ID 创建一个新的底图实例。有关可用值的列表,请参阅 Map.basemap

参数

底图 ID。

返回
类型 描述
Basemap 新的 Basemap 实例。
示例
let streetsBasemap = Basemap.fromId("tianditu-vector");
let nightBasemap = Basemap.fromId("tianditu-image");
fromJSON(json){*}static

创建此类的新实例并使用从 GeoScene 产品生成的 JSON 对象值对其进行初始化。传入到输入 json 参数的对象通常来自对 REST API 中查询操作的响应或来自另一个 GeoScene 产品的 toJSON() 方法。

参数
json Object

GeoScene 格式实例的 JSON 表示。

返回
类型 描述
* 返回该类的新实例。
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(signal){Promise}

加载此类引用的资源。如果视图是使用地图实例构造的,则此方法会自动为 View 及其在 Map 中引用的所有资源执行。

开发人员在访问不会在 View 中加载的资源时,必须调用此方法。

load() 方法仅在第一次调用时触发资源的加载。随后的调用将返回相同的 promise。

可以提供一个 signal 来停止对 Loadable 实例加载状态感兴趣。当信号中止时,实例不会停止其加载过程,只有 cancelLoad 可以中止它。

参数
optional

可用于中止异步任务的信号对象。当发出中止信号时,返回的 Promise 将被拒绝,并具有一个名为 AbortError错误。另请参阅 AbortController 以获取有关如何构造可用于传递中止信号的控制器的更多信息。

返回
类型 描述
Promise 资源已加载时解析。
loadAll(){Promise<Basemap>}
起始版本:GeoScene Maps SDK for JavaScript 4.9

加载与底图关联的所有外部可加载资源。对于底图,这将加载所有基础图层和参考图层。

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

将此类的实例转换为其 GeoScene Portal JSON 表示。有关详细信息,请参阅使用 fromJSON() 指南主题。

返回
类型 描述
Object 此类实例的 GeoScene Portal JSON 表示。
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 结果的新 promise,可用于链接其他函数。
示例
// 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
});

您的浏览器不再受支持。请升级您的浏览器以获得最佳体验。