ArcGIS API for JavaScript 4.x 教程(三)显示自定义底图样式

了解如何访问和显示地图中的样式化矢量底图图层。

样式化底图图层是一组样式,您可以定义这些样式以覆盖默认底图图层服务矢量切片图层样式之一。这些用于创建和显示具有您自己的自定义样式、标注和颜色的地图或场景。要创建样式化底图图层,可以使用 ArcGIS 矢量切片样式编辑器。编辑器将您的样式作为具有项目 ID 的图层项目存储在 ArcGIS 中。

在本教程中,您将使用项目 ID 访问和显示地图中的样式化矢量切片图层(森林和公园画布)。您还可以添加图像切片图层(世界山体阴影)以增强可视化效果。这两个图层都托管在 ArcGIS Online 中。

注意
要了解如何设置您自己的底图样式,请访问地图 API 和位置服务指南中的底图图层和样式和数据可视化。要了解有关服务的详细信息,请访问底图图层服务。

步骤

创建新笔

要开始使用,请完成显示地图教程或使用此笔。

设置 API 密钥

要访问 ArcGIS 服务,您需要一个 API 密钥。

转到仪表板以获取 API 密钥。

在 CodePen 中,将 apiKey 设置为您的密钥,以便可用于访问底图图层和位置服务。

esriConfig.apiKey = "YOUR_API_KEY";
const map = new Map({basemap: "arcgis-topographic" // Basemap layer service
});

添加模块

在 require 语句中,添加底图、矢量切片图层和切片图层模块。

  require(["esri/config","esri/Map","esri/views/MapView","esri/Basemap","esri/layers/VectorTileLayer","esri/layers/TileLayer",], function(esriConfig, Map, MapView, Basemap, VectorTileLayer, TileLayer) {esriConfig.apiKey = "YOUR_API_KEY";

创建矢量切片图层

您可以通过引用底图图层的项目 ID 来访问底图图层。您可以通过使用 ArcGIS Online 或 ArcGIS 矢量切片样式编辑器访问图层来查找图层的项目 ID。

转到 ArcGIS Online 中的森林和公园画布矢量切片图层并查找其项目 ID。该 ID 位于 URL 的末尾。

在 CodePen 中,创建一个新的 VectorTileLayer 对象,并将其 portalItem id 属性设置为 d2ff12395aeb45998c1b154e25d680e5,并将 opacity 属性设置为 0.75。

  const vectorTileLayer = new VectorTileLayer({portalItem: {id: "6976148c11bd497d8624206f9ee03e30" // Forest and Parks Canvas},opacity: 0.75});

创建图像切片图层

使用 ArcGIS Online 查找世界山体阴影影像切片图层的项目 ID,然后使用它访问该图层。图像切片图层将用于通过地形在视觉上增强样式。

转到 ArcGIS 中的世界山体阴影影像切片图层并查找其项目 ID。该 ID 位于 URL 的末尾。

在 CodePen 中,创建一个新的 TileLayer 并将其 portalItem id 属性设置为 1b243539f4514b6ba35e7d995890db1d。

  const imageTileLayer = new TileLayer({portalItem: {id: "1b243539f4514b6ba35e7d995890db1d" // World Hillshade}});

添加底图图层

底图可以包含多个基础图层。使用 Basemap 类添加上面创建的 vectorTileLayer和 imageTileLayer。这些图层将混合在一起以创建地图的基础样式。矢量切片图层提供基色,图像切片图层提供山体阴影或地形效果。

在 main 函数中,创建一个底图对象,并将矢量图层和图像图块层添加到基图层数组中。

  const basemap = new Basemap({baseLayers: [imageTileLayer,vectorTileLayer]});

更新底图属性以使用之前创建的底图对象。

  const map = new Map({basemap: basemap,});

更新地图视图

更新中心和缩放属性以将显示缩放到北美。

  const view = new MapView({container: "viewDiv",map: map,center: [-100,40],zoom: 3});

完整代码

<html>
<head><meta charset="utf-8"><meta name="viewport" content="initial-scale=1, maximum-scale=1, user-scalable=no"><title>ArcGIS Maps SDK for JavaScript Tutorials: Add a styled basemap layer</title><style>html, body, #viewDiv {padding: 0;margin: 0;height: 100%;width: 100%;}</style>  <link rel="stylesheet" href="https://js.arcgis.com/4.27/esri/themes/light/main.css"><script src="https://js.arcgis.com/4.27/"></script><script>require(["esri/config","esri/Map","esri/views/MapView","esri/Basemap","esri/layers/VectorTileLayer","esri/layers/TileLayer",], function(esriConfig, Map, MapView, Basemap, VectorTileLayer, TileLayer) {esriConfig.apiKey = "YOUR_API_KEY";const vectorTileLayer = new VectorTileLayer({portalItem: {id: "6976148c11bd497d8624206f9ee03e30" // Forest and Parks Canvas},opacity: 0.75});const imageTileLayer = new TileLayer({portalItem: {id: "1b243539f4514b6ba35e7d995890db1d" // World Hillshade}});const basemap = new Basemap({baseLayers: [imageTileLayer,vectorTileLayer]});// const apikey = YOUR_API_KEY ;const map = new Map({basemap: basemap,});const view = new MapView({container: "viewDiv",map: map,center: [-100,40],zoom: 3});});</script>
</head>
<body><div id="viewDiv"></div>
</body>
</html>

运行应用

在 CodePen 中,运行代码以显示地图。

地图视图应在世界山体阴影图像切片图层的顶部显示森林和公园画布矢量切片图层。样式化的矢量切片图层显示在山体阴影地形的顶部。

注明:翻译自esri,仅供个人查阅使用,侵删

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.mzph.cn/news/30759.shtml

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

四项代表厂商,Kyligence 入选 Gartner 数据及人工智能相关领域多项报告

近日&#xff0c;全球权威的技术研究与咨询公司 Gartner 发布了《2023 年中国数据、分析及人工智能技术成熟度曲线》、《2023 年分析与商业智能技术成熟度曲线报告》、《2023 年数据管理技术成熟度曲线报告》&#xff0c;Kyligence 分别入选这三项报告的指标平台 Metrics Store…

[保研/考研机试] KY187 二进制数 北京邮电大学复试上机题 C++实现

描述 大家都知道&#xff0c;数据在计算机里中存储是以二进制的形式存储的。 有一天&#xff0c;小明学了C语言之后&#xff0c;他想知道一个类型为unsigned int 类型的数字&#xff0c;存储在计算机中的二进制串是什么样子的。 你能帮帮小明吗&#xff1f;并且&#xff0c;小…

《兴森大求真》重磅来袭!先进电子电路可靠性大揭秘

兴森实验室&#xff0c;让可靠看得见 前言介绍 芯片性能不断增强、先进封装不断演进&#xff0c;导致封装基板信号互连的IO数量和密度不断增加、PCB的层数增加、孔间距减小、厚径比提升&#xff0c;可靠性的挑战正在加剧。 电路板作为各种电子元器件的载体和电路信号传输的枢…

ROS入门-常见的rostopic命令及其用法的示例

目录 常见的rostopic命令及其用法的示例 1. 列出所有可用的话题&#xff1a; 2. 获取话题详细信息&#xff1a; 3. 实时显示话题消息内容&#xff1a; 4. 发布消息到话题&#xff1a; 5. 发布随机消息到话题&#xff1a; 6. 查看话题消息类型&#xff1a; 7. 查看话题消…

【API生命周期看护】API日落

一、基本概念 在API的整个生命周期中&#xff0c;不可能是永远不变的。功能可能有变动、服务也可能有升级迭代&#xff0c;这个时候对外的能力入口&#xff1a;API自然也需要改变。 一般来说&#xff0c;API的变动是不可以引入兼容性问题的&#xff0c;也即不管做什么变动&am…

UDP简介

UDP 1. UDP格式2. UDP特点3. 差错检验 1. UDP格式 16位UDP长度&#xff0c;表示整个数据报&#xff08;UDP首部UDP数据&#xff09;的最大长度&#xff1b; 如果校验和出错&#xff0c;就会直接丢弃; 2. UDP特点 无连接: 知道对端的IP和端口号就直接进行传输&#xff0c;不需…

idea使用protobuf

本文参考&#xff1a;https://blog.csdn.net/m0_37695902/article/details/129438549 再次感谢分享 什么是 protobuf &#xff1f; Protocal Buffers(简称protobuf)是谷歌的一项技术&#xff0c;用于结构化的数据序列化、反序列化。 由于protobuf是跨语言的&#xff0c;所以用…

xxx酒业有限责任公司突发环境事件应急预案WORD

导读&#xff1a;原文《xxx酒业有限责任公司突发环境事件应急预案word》&#xff08;获取来源见文尾&#xff09;&#xff0c;本文精选其中精华及架构部分&#xff0c;逻辑清晰、内容完整&#xff0c;为快速形成售前方案提供参考。 目 录 1 总则 1.1 编制目的 1.2 编制…

【vue3】基础知识点-pinia

学习vue3&#xff0c;都会从基础知识点学起。了解setup函数&#xff0c;ref&#xff0c;recative&#xff0c;watch、computed、pinia等如何使用 今天说vue3组合式api&#xff0c;pinia 戳这里&#xff0c;跳转pinia中文文档 官网的基础示例中提供了三种写法 1、选择式api&a…

python进阶

目录 Json数据格式 前言 JSON格式 python数据和Json数据的相互转化 网络编程 套接字 socket服务端编程步骤 socket客户端编程步骤 python操作mysql数据库 查询并接收数据 数据插入 Json数据格式 前言 JSON是一种轻量级的数据交换格式&#xff0c;可以按照JSON指定…

【福建事业单位-资料分析】04 倍数、特殊增长率

【福建事业单位-资料分析】04 倍数、特殊增长率 一、倍数1.1现期倍数1.2 基期倍数总结 二、特殊增长率2.1 间隔增长率间隔倍数和间隔基期&#xff08;都要先求得间隔增长率r&#xff09; 2.2 年均增长率年均增长率的比较年均增长率计算-居中代入 2.3 混合增长率总结 三、总结 一…

E. Power of Points - 思维

分析&#xff1a; 题意本质就是找点在数组中任意一个位置时和所有的端点之间的距离和&#xff0c;但是直接暴力会超时&#xff0c;可以对数组排个序&#xff0c;设当前遍历的是xi&#xff0c;那么此时求的到各端点的距离就是j从1 ~ i - 1的所有端点与xi的距离之和&#xff0c;也…

AcWing 1564:哈希 ← 只具有正增量的二次探测法

【题目来源】https://www.acwing.com/problem/content/1566/【题目描述】 将一个由若干个不同正整数构成的整数序列插入到一个哈希表中&#xff0c;然后输出输入数字的位置。 哈希函数定义为 H(key)key%TSize&#xff0c;其中 TSize 是哈希表的最大大小。 利用只具有正增量的二…

配置nginx服务端口时-在同一个页面中打开多个地址端口-查看服务情况

1&#xff1a;把代码保存到xxx.html文件中 2&#xff1a;因为一个个端口打开查看&#xff0c;实在太麻烦了 3&#xff1a;在一个页面中查看多页的响应才能提高测试效率 <html><head><title>本地连接列表</title> </head><body><cente…

【C语言学习】函数的定义和调用

一、函数定义 要有返回类型、函数名和函数体 二、调用函数 函数名&#xff08;函数值&#xff09;&#xff1b; &#xff08;&#xff09;起到表示函数调用的重要作用&#xff0c;即使没有参数也需要&#xff08;&#xff09; 若有参数&#xff0c;则需要给出正确的数量和顺序…

vscode ssh远程的config/配置文件无法保存解决

问题 之前已经有了一个config&#xff0c;我想更改连接的地址和用户名&#xff0c;但是无法保存&#xff0c;显示需要管理员权限&#xff0c;但以管理员启动vscode或者以管理员权限保存都不行 未能保存“config”: Command failed: “D:\vscode\Microsoft VS Code\bin\code.c…

『PostgreSQL』在 PostgreSQL中创建只读权限和读写权限的账号

&#x1f4e3;读完这篇文章里你能收获到 理解在 PostgreSQL 数据库中创建账号的重要性以及如何进行账号管理掌握在 PostgreSQL 中创建具有只读权限和读写权限的账号的步骤和方法学会使用 SQL 命令来创建账号、为账号分配适当的权限以及控制账号对数据库的访问级别了解如何确保…

ES嵌套查询和普通查询的高亮显示区别

在 Elasticsearch 中&#xff0c;高亮显示是一种强大的搜索结果可视化工具&#xff0c;它可以帮助我们快速识别匹配的关键字或短语。在ES中&#xff0c;我们可以使用两种不同的查询方式来实现高亮显示&#xff1a;嵌套查询和普通查询。本文探讨这两种查询方式的高亮显示区别以及…

C++友元函数和友元类的使用

1.友元介绍 在C中&#xff0c;友元&#xff08;friend&#xff09;是一种机制&#xff0c;允许某个类或函数访问其他类的私有成员。通过友元&#xff0c;可以授予其他类或函数对该类的私有成员的访问权限。友元关系在一些特定的情况下很有用&#xff0c;例如在类之间共享数据或…

​朋友圈评论截图生成,制作朋友圈网页​

朋友圈头像&#xff0c;上传自己的朋友圈头像&#xff1b;不填默认随机 网名&#xff0c;填写微信昵称&#xff1b; 内容&#xff0c;需要发布的微信正文内容&#xff1b; 截图类型&#xff0c;支持纯文字、图片&#xff08;单张、九宫格&#xff09;、分享网页/公众号文章共…