文章目录

  • 前言
  • 方式一
  • 方式二

前言

某些项目可能多方参与,每一方使用的GIS平台有时会有所不同,这时为了统一各方地图服务,通常会发布OGC标准的WMTS地图服务供各方使用。ArcGIS API for JavaScript提供了专门加载WMTS服务的类WMTSLayer,通过一些配置参数后即可以添加图层;另外ArcGIS API 还提供了类TiledMapServiceLayer,通过继承该类也可以自定义一个加载WMTS服务的类,这种方式和上篇基于ArcGIS API for JavaScript加载天地图相同。

方式一

直接使用WMTSLayer

API地址:https://developers.arcgis.com/javascript/3/jsapi/wmtslayer-amd.html

官方示例: https://developers.arcgis.com/javascript/3/jssamples/layers_wmtslayerresourceinfo.html

代码如下:

<!DOCTYPE html>
<html lang="en"><head><meta charset="UTF-8"><meta name="viewport" content="width=device-width, initial-scale=1.0"><meta http-equiv="X-UA-Compatible" content="ie=edge"><title>ArcGIS JS API叠加WMTS图层(原生类WMTSLayer)</title>
</head>
<link rel="stylesheet" href="https://js.arcgis.com/3.27/esri/css/esri.css">
<style>html,body,#map {height: 100%;width: 100%;margin: 0;padding: 0;}
</style>
<script src="https://js.arcgis.com/3.27/"></script><script>require(["esri/map","esri/layers/WMTSLayer","esri/layers/WMTSLayerInfo","esri/geometry/Extent","esri/layers/TileInfo","esri/SpatialReference","dojo/domReady!"], function (Map, WMTSLayer, WMTSLayerInfo,Extent, TileInfo, SpatialReference) {var map = new Map("map", {center: [86.9, 28],zoom: 3});var tileInfo = new TileInfo({"dpi": 96,//又称ppi:pixel per inch"format": "format/png","compressionQuality": 0,"spatialReference": new SpatialReference({"wkid": 4326}),"rows": 512,"cols": 512,"origin": {"x": -180,"y": 90},"lods": [{"level": "0","scale": 236663484.36365247,"resolution": 0.5624999999999999}, {"level": "1","scale": 118331742.18182631,"resolution": 0.28125000000000017}, {"level": "2","scale": 59165871.090913124,"resolution": 0.140625}, {"level": "3","scale": 29582935.545456562,"resolution": 0.0703125}, {"level": "4","scale": 14791467.772728289,"resolution": 0.03515625000000002}, {"level": "5","scale": 395733.8863641415,"resolution": 0.017578125000000003}, {"level": "6","scale": 3697866.94318207,"resolution": 0.008789062499999998}, {"level": "7","scale": 1848933.471591035,"resolution": 0.004394531249999999}, {"level": "8","scale": 924466.7357955176,"resolution": 0.002197265625}, {"level": "9","scale": 462233.3678977588,"resolution": 0.0010986328125}, {"level": "10","scale": 231116.6839488794,"resolution": 0.00054931640625}, {"level": "11","scale": 115558.3419744397,"resolution": 0.000274658203125}]});var tileExtent = new Extent(-180, -90, 180, 90, new SpatialReference({wkid: 4326}));var layerInfo = new WMTSLayerInfo({tileInfo: tileInfo,fullExtent: tileExtent,initialExtent: tileExtent,identifier: "SRTM_Color_Index",//通过元数据即XML文件可查看tileMatrixSet: "31.25m",format: "png",style: "default"});var resourceInfo = {version: "1.0.0",layerInfos: [layerInfo],copyright: "earthdata"};var options = {serviceMode: "KVP",resourceInfo: resourceInfo,layerInfo: layerInfo};wmtsLayer = new WMTSLayer("https://gibs.earthdata.nasa.gov/wmts/epsg4326/best", options);map.addLayer(wmtsLayer);});
</script><body><div id="map"></div>
</body></html>

效果图

方式二

扩展TiledMapServiceLayer

API地址: https://developers.arcgis.com/javascript/3/jsapi/tiledmapservicelayer-amd.html

这部分直接参考基于ArcGIS API for JavaScript加载天地图就可以了,天地图的服务是符合OGC标准的WMTS服务。

使用ArcGIS JS API加载WMTS图层的两种方式相关推荐

  1. ArcGIS JS API加载GeoServer发布的WFS服务

    文章目录 前言 主要代码 总结 参考链接 前言 WFS(Web Feature Service),OGC标准下的要素服务.其支持的主要操作如下: GetCapabilities (discovery ...

  2. Spring加载properties文件的两种方式

    2019独角兽企业重金招聘Python工程师标准>>> 在项目中如果有些参数经常需要修改,或者后期可能需要修改,那我们最好把这些参数放到properties文件中,源代码中读取pro ...

  3. Android加载GIF图片的两种方式

    飞哥语录:得到一件东西最好的方式是让自己配得上它. 方式一:使用第三开源框架直接在布局文件中加载gif 1.在工程的build.gradle中添加如下 buildscript {repositorie ...

  4. Python加载csv文件的两种方式

    本文主要讲解下Python加载csv文件的两种方式,如果知道如何处理的就不必往下看了! 下面来简单介绍下. 实例中的数据集是kaggle的Digit Recognizer的train.csv文件,数据 ...

  5. php动态加载js,动态加载script文件的两种方法_javascript技巧

    动态加载script到页面大约有俩方法 第一种就是利用ajax方式,把script文件代码从后台加载到前台,然后对加载到的内容通过eval()执行代码.第二种是,动态创建一个script标签,设置其s ...

  6. hibernate加载持久化对象的两种方式---------------load方式和get方式

    2019独角兽企业重金招聘Python工程师标准>>> 参考:http://my.oschina.net/u/1169535/blog/282483 1. Hibernate get ...

  7. (9) hibernate加载持久化对象的两种方式——get、load

    一.get与load对比 在hibernate中get和load方法是根据id取得持久化对象的两种方法,但在实际使用的过程中总会把两者混淆,不知道什么情况下使用get好,什么时候使用load方法效率更 ...

  8. vue中使用动态添加路由(router.addRoutes)加载权限侧边栏的两种方式

    工作中我们经常会遇到这种需求,后台定义用户的权限数据,前端进行获取,并渲染在侧边栏导航上,不同权限的用户看到的侧边栏是不同的.即前端渲染的数据是随着后台的改变而改变的,做到真正的前后端分离. 一.拿到 ...

  9. c语言加载本地图片,Unity加载本地图片的2种方式

    1. 使用 WWW 加载,详细查看 unity3d 官方文档. 2. 使用 System.IO 加载,lua 代码如下: local File = luanet.import_type("S ...

最新文章

  1. linux监控平台搭建-内存
  2. LeetCode 829. Consecutive Numbers Sum--笔试题--C++解法
  3. jQuery判断当前元素显示状态并控制元素的显示与隐藏
  4. 手写Spring-ioc 注入 jdk反射实现 绝对满足你的好奇心哦 解决怎么我写了一个注解就可以直接注入了?
  5. sql where 1=1和 0=1 的作用
  6. afterclass_通过beforeClass和afterClass设置增强Spring Test Framework
  7. NodeJs本地搭建服务器,模拟接口请求,获取json数据
  8. strus2拦截器中获取客户端ip
  9. html5 删除llocalstorage变量,删除存储在浏览器中的 Local Storage 数据《 HTML5:Web 存储 》...
  10. java数学系统总结与展望_总结与展望
  11. 学点PYTHON基础的东东--数据结构,算法,设计模式---访问者模式
  12. LSI存储论坛:6Gb SAS让DAS焕发新活力?
  13. maxscript编辑器脚本高亮显示
  14. idea 2019.3 集成SVN
  15. 好用的Mac数据恢复软件在这里
  16. 利用华为DTM将事件发送到Firebase
  17. rax Picture组件
  18. Node.js十年,你大爷还是你大爷
  19. jquery 中奖名单滚动
  20. JOIN连接:LEFT OUTER JOIN

热门文章

  1. 程序员面试题精选100题(07)-翻转句子中单词的顺序[算法]
  2. 图像滤波 Image Filtering
  3. C++,那些可爱的小陷阱(三)
  4. CF1060D Social Circles
  5. Andrew Ng 深度学习笔记-01-week2-课程
  6. Pimple - 一个简单的 PHP 依赖注入容器
  7. ADB设置连接android真机
  8. MUI多端发布开发指南(终于把MUI的使用场景说清楚了)
  9. 《Cisco QoS认证考试指南(第2版)》——1.1节“我已经知道了吗?”测试
  10. 两台xenserver 同一个vlan中的vm 不能ping通?