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()
: 更改图层顺序。
【推荐】国内首个AI IDE,深度理解中文开发场景,立即下载体验Trae
【推荐】编程新体验,更懂你的AI,立即体验豆包MarsCode编程助手
【推荐】抖音旗下AI助手豆包,你的智能百科全书,全免费不限次数
【推荐】轻量又高性能的 SSH 工具 IShell:AI 加持,快人一步
· 全程不用写代码,我用AI程序员写了一个飞机大战
· MongoDB 8.0这个新功能碉堡了,比商业数据库还牛
· 记一次.NET内存居高不下排查解决与启示
· DeepSeek 开源周回顾「GitHub 热点速览」
· 白话解读 Dapr 1.15:你的「微服务管家」又秀新绝活了