arcgis for javascript中的TileLayer(缓存地图服务图层)

news2024/11/18 13:58:45

一、什么是图层

要理解TileLayer图层,咱要先搞清楚在arcgis中图层概念
ArcGIS for JavaScript中的图层是数据的可视化链接。简单来说,它可以将数据显示在地图上。
图层是地图上的一个图形单元,可以是点、线、面、文本等,通常由一个或多个要素组成,每个要素由一个或多个几何体和一个或多个属性定义。在ArcGIS for JavaScript中,图层分为四种类型

  1. 图片图层:由单张图片或多张图片(如动态地图服务)组成的图层,主要用于静态地图或多时态的动态地图。
  2. 瓦片图层:由由预先生成的小图像(瓦片)按照一定顺序组成的,以达到快速显示效果的图层,主要用于快速显示大规模和高分辨率数据。
  3. 矢量图层:由客户端读取的数据所组成的图层,主要用于查询和编辑等操作。
  4. 动态图层:与栅格图层类似,但是通过服务端动态生成图片以实现更灵活的交互性。

图层可以在地图中可见或不可见,并且可以设置其样式和属性以满足各种需要。通过ArcGIS服务或本地数据集中的图层,很容易创建和添加各种图层到地图中。

二、什么是TileLayer图层

TileLayerArcGIS for JavaScript API中的一个图层类型,用于显示采用切片技术的Web地图服务。TileLayer基于Web服务的一般规范,以正确的位置和比例尺呈现地图瓦片
TileLayer 允许您使用由 ArcGIS Server REST API公开的缓存地图服务并将其作为切片图层添加到地图中缓存服务从缓存访问切片而不是动态渲染图像。因为它们是缓存的,所以平铺层比 MapImageLayers渲染得更快。要创建 TileLayer 的实例,您必须引用缓存地图服务的 URL。

require(["esri/layers/TileLayer"], function(TileLayer) {
  let layer = new TileLayer({
    url: "https://services.arcgisonline.com/arcgis/rest/services/World_Terrain_Base/MapServer"
  });
  // Add layer to map
});

TileLayer具有以下主要特点:

  1. 支持常见的Web地图服务和图层(如ArcGIS Online、Google Maps、OpenStreetMap等)。

  2. 提供了灵活的配置选项,如瓦片大小、最大和最小缩放级别、瓦片图像格式等。

  3. 可以设置瓦片缓存,以提高地图加载速度和性能。

  4. 支持鼠标悬停和单击事件。

使用ArcGIS for JavaScript中的TileLayer可以轻松地在Web应用程序中嵌入地图服务。TileLayer的配置选项非常灵活,可以根据具体需求进行调整。下面是一些常见的TileLayer配置选项:

  1. url:地图服务的URL地址。

  2. tileSize:瓦片大小,默认为256

  3. maxZoom:最大缩放级别。

  4. minZoom:最小缩放级别。

  5. zoomOffset:缩放级别偏移量。

  6. imageFormat:瓦片图片格式,支持PNG、JPEG等。

  7. tileCacheSize:瓦片缓存大小。

  8. visible:是否可见,默认为true

三、实例对比

咱一起看看没有图层和有图层的视觉上的效果对比

  1. 没有图层的基于底图的2d,3d效果图:
    在这里插入图片描述
    代码如下:
<!DOCTYPE html>
<html>
  <head>
    <meta charset="utf-8" />
    <meta name="viewport" content="initial-scale=1, maximum-scale=1, user-scalable=no" />
    <title>默认的2d3d</title>
    <style>
      html,
      body,
      #viewDiv {
        padding: 0;
        margin: 0;
        height: 100%;
        width: 100%;
      }
      #mapDiv2D {
        float: left;
        width: 50%;
        height: 100%;
      }
      #mapDiv3D {
        float: right;
        width: 50%;
        height: 100%;
      }
    </style>
    <link rel="stylesheet" href="https://js.arcgis.com/4.26/esri/themes/light/main.css" />
    <script src="https://js.arcgis.com/4.26/"></script>
    <script>
      require([
        "esri/Map",
        "esri/views/SceneView",
        "esri/views/MapView",
      ], (Map, SceneView, MapView) => {
        const map = new Map({
          basemap: "topo-vector"
        });
        let view2D = new MapView({
          container: "mapDiv2D",
          map: map,
          center: [110.1, 23.8],
          zoom: 3,
        });
        //3d
        let view3D = new SceneView({
          container: "mapDiv3D",
          map: map,
          center: [110.1, 23.8],
          zoom: 1,
        });
      });
    </script>
  </head>
  <body>
    <div id="viewDiv">
      <div id="mapDiv2D"></div>
      <div id="mapDiv3D"></div>
      <div style="clear: both"></div>
    </div>
  </body>
</html>

  1. 有TileLayer图层的2d,3d效果图:
    在这里插入图片描述
    代码如下:
<!DOCTYPE html>
<html>
  <head>
    <meta charset="utf-8" />
    <meta name="viewport" content="initial-scale=1, maximum-scale=1, user-scalable=no" />
    <title>titleLayer三维地图</title>
    <style>
      html,
      body,
      #viewDiv {
        padding: 0;
        margin: 0;
        height: 100%;
        width: 100%;
      }
      #mapDiv2D {
        float: left;
        width: 50%;
        height: 100%;
      }
      #mapDiv3D {
        float: right;
        width: 50%;
        height: 100%;
      }
    </style>
    <link rel="stylesheet" href="https://js.arcgis.com/4.26/esri/themes/light/main.css" />
    <script src="https://js.arcgis.com/4.26/"></script>
    <script>
      require([
        "esri/Map",
        "esri/views/SceneView",
        "esri/layers/TileLayer",
        "esri/views/MapView",
      ], (Map, SceneView, TileLayer, MapView) => {
        // 创建TileLayer图层
        const layer = new TileLayer({
          url: "https://services.arcgisonline.com/arcgis/rest/services/World_Terrain_Base/MapServer",
        });
        var map = new Map(); // 创建map的时候不设置basemap底图
        map.add(layer); // 将TileLayer添加到地图中
        // 左侧2d
        let view2D = new MapView({
          container: "mapDiv2D",
          map: map,
          center: [110.1, 23.8],
          zoom: 3,
        });
        //右侧3d
        let view3D = new SceneView({
          container: "mapDiv3D",
          map: map,
          center: [110.1, 23.8],
          zoom: 1,
        });
      });
    </script>
  </head>
  <body>
    <div id="viewDiv">
      <div id="mapDiv2D"></div>
      <div id="mapDiv3D"></div>
      <div style="clear: both"></div>
    </div>
  </body>
</html>

这里的地图服务url我用的是官方的, 当然这个东西是可以自己自定义部署的,这需要借助ArcMap软件,具体如何部署在后续文章更新,这里就不介绍了。

        const layer = new TileLayer({
          url: "https://services.arcgisonline.com/arcgis/rest/services/World_Terrain_Base/MapServer",
        });

我们打开浏览器的调试面板,看一下这些瓦片的请求:
在这里插入图片描述
在这里插入图片描述
可以看到这个图层就是由这样的一个一个瓦片组成的。

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

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

相关文章

复杂的HANASQL 列表转多行

一 前言 基于HANA的内存数据库的强大性能, SAP建议把业务逻辑下沉到HANA中计算.以便减少应用服务器的负担,让程序性能更好一些. SAP本身的一些复杂的业务逻辑比如MRP运算(MD01)也有了新的事务 MD01N (MRP LIVE),性能得以巨大的提升 报表类的数据分析程序尤其适用此原则. 动态报…

淘宝监控竞品sku数据接口

电商竞品数据监控查询可以通过以下几个步骤实现&#xff1a; 确定需要监控的竞品&#xff1a;首先需要明确自己店铺的产品定位和竞争对手&#xff0c;选择需要监控的竞品。 选择监控工具&#xff1a;根据需求和预算选择适合自己的电商竞品数据监控工具&#xff0c;例如谷歌分析…

nvm管理node的多版本,任意安装,切换不同nodejs版本

1.nvm安装包下载&#xff1a; https://github.com/coreybutler/nvm-windows/releases window操作系统选择安装包直接安装&#xff1a; 如果已经在使用的nodejs无需卸载&#xff0c;安装过程中会提示是否需要管理已经安装的版本&#xff0c;选择“是”。 2.安装完成之后&…

云计算——云计算部署形成及应用

作者简介&#xff1a;一名云计算网络运维人员、每天分享网络与运维的技术与干货。 座右铭&#xff1a;低头赶路&#xff0c;敬事如仪 个人主页&#xff1a;网络豆的主页​​​​​ 目录 前言 一.云计算部署形式 1.私有云 &#xff08;1&#xff09;私有云优点 &#x…

计划

img { margin: auto; display: block } 优化器的作用是什么&#xff1f;例举一下神经网络中常用的优化器&#xff1f; 优化器作用&#xff1a;求出让损失函数最小化的参数。 常用优化器&#xff1a; 1、Adam 关联所有样本的梯度&#xff0c;便于求解全局最优解&#xff0c;始终…

有公网IP,如何设置端口映射实现访问?

很多中小型公司或个人会根据自身需求自建服务器&#xff0c;或者将自己内网的服务、应用发布到外网&#xff0c;实现异地访问&#xff0c;如远程桌面、网站、数据库、公司的管理系统、FTP、管家婆、监控系统等等。 没接触过的人可能会觉得这个很难&#xff0c;实际上使用快解析…

国内镜像+JDK下载地址+IDEA专业安装版和免安装版下载地址

一、OracleJDK下载地址 JDK版本Oracle JDK新增特性官网原版下载地址JDK 1.0-已下线JDK 1.1-已下线JDK 1.2-已下线JDK 1.3-已下线JDK 1.4-已下线JDK 5.0自动装箱、泛型、枚举、增强的for循环、注解等已下线JDK 6JDBC 4.0、Pluggable Annotation Processing API、JAX-WS、StAX等…

Redis底层学习(六)—存储类型-ZSet篇

这里写目录标题 结构特点具体服务器操作命令底层结构应用场景 结构特点 适⽤场景&#xff1a;存储不重复且有序需求的数据&#xff0c;⽐如&#xff1a;学⽣的⾼考成绩。 它的内部采⽤“ 跳跃列表 ”实现&#xff0c;根据score进⾏排序 具体服务器操作命令 添加元素到zset中…

RedditVideoMakerBot 视频制作机器人自动生成视频搭建教程

https://github.com/elebumm/RedditVideoMakerBot搭建教程 RedditVideoMakerBot视频制作机器人 有些在抖音、快手上的视频获得了数百万的观看次数&#xff0c;你仔细分析他们的视频&#xff0c;他们唯一做的原创事情收集材料、然后拼接在一起。尤其是一些新闻类的视频&#xff…

深度学习-RepVGGNet

文章目录 前言一、RepVgg简介二、为什么训练时采用多分支结构三、为什么推理时使用单分支结构四、结构重参数化1、融合Conv2d和BN 前言 看yolonas代码&#xff0c;发现有QARepVgg网络&#xff0c;完全不懂&#xff0c;所以来补课&#xff0c;先看了RepVGG 这篇文章主要来自于霹…

模六十计数器(三)

文章目录 前言一、代码模板二、Verilog程序1、顶层模块2、计数模块3、显示模块 三、Testbench程序四、仿真波形五、实测结果总结 前言 又隔了将近一年&#xff0c;学习明德扬编程规范&#xff0c;重新编写模六十计数器程序&#xff0c;使其符合规范&#xff0c;并采用模板化与…

阿秀去面腾讯了(社招两年面试经验)

作者&#xff1a;阿秀 校招八股文学习网站&#xff1a;https://interviewguide.cn 小伙伴们大家好&#xff0c;我是阿秀。 前段时间说了自己换工作的事&#xff1a;阿秀离职了&#xff0c;虽然最后选择去了外企&#xff0c;但在换工作期间也看了不少机会&#xff0c;基本国内的…

独立开发变现周刊(第89期):一个 AI 小工具,两个月内赚7.3万美元

分享独立开发、产品变现相关内容&#xff0c;每周五发布。 目录 1、privateGPT: 可以和本地文档进行交互的聊天机器人2、chatbutler: 无代码可视化创建聊天机器人3、CommaFeed&#xff1a;可以自托管RSS阅读器开源项目4、roop: 一键深度换脸5、deeplearning: 吴恩达在推特上宣布…

搜索帮助demo:F4IF_INT_TABLE_VALUE_REQUEST 返回多列值

货铺QQ群号&#xff1a;834508274微信群不能扫码进了&#xff0c;可以加我微信SAPliumeng拉进群&#xff0c;申请时请提供您哪个模块顾问&#xff0c;否则是一律不通过的。进群统一修改群名片&#xff0c;例如BJ_ABAP_森林木。群内禁止发广告及其他一切无关链接&#xff0c;小程…

零基础开发小程序第三课-列表功能开发

最近我新研究了一款无代码开发工具&#xff0c;主打的是一行代码都不写来开发小程序。已经有了两篇文章 利用无代码工具开发一款小程序 公民开发者学习无代码编程&#xff0c;从CRUD开始 前两篇文章已经介绍了如何创建项目&#xff0c;如何建立数据表&#xff0c;以及开发新…

智哪儿×广州光亚展专栏:对话8家AIoT及芯片方案企业,解读其核心竞争优势及成熟项目案例,参展亮点提前看

2023年6月9-12日&#xff0c;第二十八届广州国际照明展览会&#xff08;光亚展&#xff0c;GILE2023&#xff09;将在广州中国进出口商品交易会展馆正式启幕。本届展会以“「光」未来”为主题&#xff0c;将迎来3,318家来自18个国际及地区的参展企业&#xff0c;展示规模将横跨…

【MCS-51单片机汇编语言】期末复习总结②——汇编程序设计(题型二)

文章目录 顺序结构分支结构CJNE的使用规则 循环结构包含部分分类 常考题型例题1题目描述题解 例题2题目描述题解 例题3题目描述题解 顺序结构 程序默认以顺序结构执行&#xff1b; 分支结构 用CJNE进行分支&#xff1b; CJNE的使用规则 CJNE A, #data rel 若(A) (data)&a…

高完整性系统工程(九):Invariants

目录 1. INVARIANTS 1.1 例子 1.2 正式的证明 1. INVARIANTS 一个不变式需要满足以下三个属性&#xff1a; 当循环开始时&#xff0c;不变式是正确的在每一次循环迭代之后&#xff0c;不变式仍然是正确的当循环条件为假时&#xff0c;不变式能推出循环结束后的条件&#x…

刘知远团队提出:如何通过扩大高质量指导性对话数据集,来提高模型的性能和效率...

深度学习自然语言处理 原创作者 | 刘嘉玲 随着开源语言大模型(LLM)的百花齐放&#xff0c;模型的性能和效率关乎到产品的成本和服务体验的均衡。那么&#xff0c;有没有办法让语言大模型变得更高效、更优秀呢&#xff1f; 为了进一步提高开源模型的上限&#xff0c;清华大学的研…

数据库新闻速递 明白3中主流的数据迁移方法 (译)

头还是介绍一下群&#xff0c;如果感兴趣polardb ,mongodb ,mysql ,postgresql ,redis 等有问题&#xff0c;有需求都可以加群群内有各大数据库行业大咖&#xff0c;CTO&#xff0c;可以解决你的问题。加群请联系 liuaustin3 &#xff0c;在新加的朋友会分到2群&#xff08;共8…