JS API模块之map

require(["esri/Map"], (Map) => { /* code goes here */ });

Map

官方介绍:

Map类包含用于存储、管理和叠加2D和3D视图通用层的属性和方法。图层可以从地图中添加和删除,但要通过MapView(用于查看2D数据)或SceneView(用于查看3D数据)进行渲染。因此,地图实例是一个保存层的简单容器,而视图是显示地图的层和基础地图并与之交互的方法。

一个地图可以被多个视图引用。例如,这个示例包含一个在两个独立视图中可见的单一Map——一个在2D中,另一个在3D中。由于同一个应用程序中的多个视图可以访问一个地图,因此与地图层的所有用户交互都在视图上处理,而不是在地图上处理。

Map的实例是MapView和SceneView的重要组件。一个Map对象应该在视图之前创建,这样它才能被传递到视图的Map属性中(例如MapView。地图,SceneView.map)。

// Load the Map and MapView modules
require(["esri/Map", "esri/views/MapView"], function(Map, MapView) {
  // Create a Map instance
  const myMap = new Map({
    basemap: "streets-vector"
  });
  // Create a MapView instance (for 2D viewing) and reference the map instance
  const view = new MapView({
    map: myMap
  });
});

属性介绍

allLayers

地图中所有层的扁平集合。该集合包含基本地图层、操作层和基础层。组层及其子层也是这个集合的一部分。基图中的引用层将始终包含在集合的末尾。图层不应直接添加到此集合。它们只能通过图层、底图或地面属性添加。

例子

// 找到标题为“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);
});

basemap

在线地图:satellite、hybrid、oceans、osm、terrain、dark-gray-vector、gray-vector、streets-vector、streets-night-vector、streets-navigation-vector、topo-vector、streets-relief-vector

// Set the basemap in the constructor
const map = new Map({
  basemap: "hybrid"
});

// Set the basemap after the map instance is created
map.basemap = "topo-vector";

第三方地图:

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

layers

操作层的集合。这个属性包含操作层,比如FeatureLayers, WebTileLayers和GraphicsLayers,它们可以被查询,分配不同的渲染器,分析等等。它不包括基图。

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

一个层只能添加到一个父层。将同一层添加到多个地图或grouplayer是不可能的。如果您尝试这样做,该层将自动从当前父层中删除,并放置在新的父层中。

方法预览

add(): 向layers集合添加一个层。

addMany(): 将层或层数组添加到层集合。

destroy(): 破坏映射和任何关联的资源,包括它的层、基图、表和地面。

findLayerById(): 根据给定的层ID返回一个层。

findTableById(): 根据给定的表ID返回一个表。

remove(): 从层集合中移除指定的层。

removeAll(): 删除所有层。

removeMany(): 删除指定的层。

reorder(): 更改图层顺序。

posted @ 2022-07-19 15:17  槑孒  阅读(111)  评论(0编辑  收藏  举报