當前位置: 首頁>>編程示例 >>用法及示例精選 >>正文


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。非經特殊聲明,原始代碼版權歸原作者所有,本譯文未經允許或授權,請勿轉載或複製。