当前位置: 首页>>代码示例 >>用法及示例精选 >>正文


JavaScript ArcGIS MapImageLayer用法及代码示例


基本信息

以下是所在类或对象的基本信息。

AMD: require(["esri/layers/MapImageLayer"], (MapImageLayer) => { /* code goes here */ });

ESM: import MapImageLayer from "@arcgis/core/layers/MapImageLayer";

类: esri/layers/MapImageLayer

继承: MapImageLayer > Layer > Accessor

自从:用于 JavaScript 4.0 的 ArcGIS API

用法说明

概述

MapImageLayer 允许您显示和分析 map service 中定义的子图层中的数据,导出图像而不是特征。Map服务图像是根据请求在服务器上动态生成的,其中包括 LOD(细节级别)、边界框、dpi、空间参考和其他选项。在 2D 中,导出的图像具有指定的整个Map范围。在 3D 中,导出两个图像:靠近相机的区域具有较高分辨率的图像,距离相机较远的区域具有较低分辨率的图像。

FeatureLayer 不同,MapImageLayer 处理由服务器而不是客户端处理。在某些情况下,将处理卸载到服务器允许MapImageLayer 以更高的性能呈现更多函数。

MapImageLayer 不显示平铺图像。要显示切片Map服务图层,请参阅TileLayer

创建MapImageLayer

MapImageLayer 可以通过以下两种方式之一创建:从服务 URL 或从 ArcGIS 门户项目 ID。

引用服务 URL

要从服务创建 MapImageLayer 实例,您必须将 url 属性设置为Map服务中图层的 REST 端点。 URL 通常如下所示。

https:\/\/<hostname>/arcgis/rest/services/<service-name>/MapServer

要使图层在视图中可见,必须将其添加到视图引用的Map。有关向Map添加图层的信息,请参阅Map.add()

require(["esri/layers/MapImageLayer"], function(MapImageLayer){
  // points to the states layer in a service storing U.S. census data
  let layer = new MapImageLayer({
    url: "https://sampleserver6.arcgisonline.com/arcgis/rest/services/Census/MapServer"
  });
  map.add(layer);  // adds the layer to the map
});

如果从不同的域请求Map服务,则需要 CORS enabled serverproxy

引用 ArcGIS 门户项目 ID

如果 ArcGIS Online 或 ArcGIS Enterprise 中作为项目存在,您还可以根据其 ID 创建 MapImageLayer。例如,以下代码片段显示如何使用 PortalItem 属性将新的 MapImageLayer 实例添加到Map。

// references an ArcGIS Online item pointing to a Map Service Layer
let layer = new MapImageLayer({
  portalItem: {  // autocasts as esri/portal/PortalItem
    id: "8444e275037549c1acab02d2626daaee"
  }
});
map.add(layer);  // adds the layer to the map

子层

Map服务包含一个或多个子图层。子层甚至可以包含嵌套子层。当未指定 MapImageLayer 的 sublayers 属性时,会将服务中所有子图层的图像导出到客户端。如果指定了服务中的子层子集,则仅在客户端上渲染该子层子集。子图层具有保存到服务器的默认渲染、比例可见性、标签和其他属性。但是,这些属性可能会动态更改,以便将新的Map图像导出到视图中。 MapImageLayer 的子图层只能使用 2D 符号系统设置样式,即使它们在 WebScene 中渲染也是如此。要了解有关使用子层的更多信息,请参阅Sublayer API 文档。

mapimagelayer-renderer

动态层

子图层可以动态渲染为动态图层。有两种类型的动态层:DynamicMapLayerDynamicDataLayer

Dynamic map layers 允许您使用新的渲染器、定义表达式、不透明度、比例可见性等覆盖Map服务中的子图层。单个Map服务图层可能存在多个动态Map图层。

Dynamic data layers 提供从注册工作区中引用的数据动态创建图层的能力。数据可以是包含或不包含几何、要素类和栅格的表。这些数据源对服务目录不直接可见,但可以使用ArcGIS 服务器管理器发布和配置。表中的数据可以连接到其他表或动态Map图层。

Esri 要求当您在应用程序中使用 ArcGIS 在线底图时,该Map必须包含 Esri 署名,并且您必须获得使用该内容的许可。有关使用归因的详细指南,请访问官方 attribution in your app 文档。有关使用条款的信息,请参阅Terms of Use FAQ

例子:

let layer = new MapImageLayer({
url: "https://sampleserver6.arcgisonline.com/arcgis/rest/services/USA/MapServer",
  sublayers: [
   {
     id: 3,
     visible: false
   }, {
     id: 2,
     visible: true
   }, {
     id: 1,
     visible: true
   }, {
     id: 0,
     visible: true,
     definitionExpression: "pop2000 > 100000"
   }
 ]
});

相关用法


注:本文由纯净天空筛选整理自arcgis.com大神的英文原创作品 MapImageLayer。非经特殊声明,原始代码版权归原作者所有,本译文未经允许或授权,请勿转载或复制。