ArcGIS API for JavaScript与天地图的简单使用

【ArcGIS JS】ArcGIS API for JavaScript加载天地图 关于ArcGIS调用天地图的方法,还有两篇博客可以参考,一个是esri针对SDK for Android,另一个是LZU-GIS扩展dojo。这里我在这两篇文章的基础上提供一种直接调用相关API的方法,基于ArcGIS API for JavaScript v3.18。 一、WMTS服务 WMTS服务即网络地图瓦片服务,不同于WMS、WFS、WCS可以简单一句url的GET请求调用一张地... 阅读详情
<template>
  <div id='viewDiv'></div>
</template>

<script>
	//首先引入esri-loader
  import {loadModules} from 'esri-loader';

  export default {
    name: 'index',
    data(){
      return{

      };
    },
    mounted() {
    	//这里的option可以自己选择使用哪个版本
      let options = {
        url: 'https://js.arcgis.com/4.24/',
        css: 'https://js.arcgis.com/4.24/esri/themes/light/main.css'
      };
      loadModules([
        'esri/Map',
        'esri/layers/WebTileLayer',
        'esri/layers/support/TileInfo',
        'esri/views/MapView',
        'esri/geometry/SpatialReference',
        'esri/geometry/Point',
        'esri/layers/WMTSLayer',
        'esri/layers/MapImageLayer',
        'esri/identity/IdentityManager',
        'esri/layers/FeatureLayer',
        'dojo/domReady!'
      ], options).then(
        ([Map, WebTileLayer, TileInfo, MapView, SpatialReference, Point, WMTSLayer, MapImageLayer, IdentityManager, FeatureLayer]) => {
          let token = '***********'; //此处的token需要自己在天地图官网注册,没有token会报错;
          //下方的 tileInfo 可以通用,用来定义地图的各种配置
          let tileInfo = new TileInfo({
            dpi: 90.71428571427429,  // 切片方案的每英寸点数(即像素)。
            size: 256,  // 设置每个瓷砖的高度和宽度为[256, 256]像素。
            origin: {  // 切片方案的原点。
              x: -180,
              y: 90
            },
            spatialReference: {wkid: 4490},
            lods: [ //地图放大缩小层级
              {'level': '5', 'scale': 18489334.715625, 'resolution': 0.0439453125},
              {'level': '6', 'scale': 9244667.3578125, 'resolution': 0.02197265625},
              {'level': '7', 'scale': 4622333.67890625, 'resolution': 0.010986328125},
              {'level': '8', 'scale': 2311166.839453125, 'resolution': 0.0054931640625},
              {'level': '9', 'scale': 1155583.4197265625, 'resolution': 0.00274658203125},
              {'level': '10', 'scale': 577791.7098632812, 'resolution': 0.001373291015625},
              {'level': '11', 'scale': 288895.8549316406, 'resolution': 0.0006866455078125},
              {'level': '12', 'scale': 144447.9274658203, 'resolution': 0.00034332275390625},
              {'level': '13', 'scale': 72223.96373291015, 'resolution': 0.000171661376953125},
              {'level': '14', 'scale': 36111.98186645508, 'resolution': 0.0000858306884765625},
              {'level': '15', 'scale': 18055.99093322754, 'resolution': 0.00004291534423828125},
              {'level': '16', 'scale': 9027.99546661377, 'resolution': 0.000021457672119140625},
              {'level': '17', 'scale': 4513.997733306885, 'resolution': 0.000010728836059570312},
              {'level': '18', 'scale': 2256.9988666534423, 'resolution': 0.000005364418029785156},
              {'level': '19', 'scale': 1128.4994333267211, 'resolution': 0.000002682209014892578}
            ]
          });
          //ArcGIS API for JavaScript展示天地图有好几种方式,我只用过其中两种
          //第一种
          let tiledLayerAnno = new WebTileLayer({
            urlTemplate: 'http://{subDomain}.tianditu.gov.cn/vec_c/wmts?SERVICE=WMTS&REQUEST=GetTile&VERSION=1.0.0&LAYER=vec&STYLE=default&TILEMATRIXSET=c&FORMAT=tiles&TILEMATRIX={level}&TILEROW={row}&TILECOL={col}&tk=' + token,
            subDomains: ['t0', 't1', 't2', 't3', 't4', 't5', 't6', 't7'],
            tileInfo: tileInfo,
            spatialReference: {wkid: 4490}
          });
          //第二种
          // const layer = new WMTSLayer({
          //   url: 'http://t0.tianditu.gov.cn/vec_c/wmts',
          //   customParameters: {
          //     tk: token
          //   }
          // });
          // const annaLayer = new WMTSLayer({
          //   url: 'http://t0.tianditu.gov.cn/cva_c/wmts',
          //   customParameters: {
          //     tk: token
          //   }
          // });
          // const annaLayer2 = new WMTSLayer({
          //   url: 'https://t0.tianditu.gov.cn/img_c/wmts',
          //   customParameters: {
          //     tk: token
          //   }
          // });
          //定位到济南市中心
          let cityCenter = new Point(116.985, 36.671, new SpatialReference({wkid: 4490}));
          let map = new Map({
            basemap: {
              baseLayers: [tiledLayerAnno]
            }
          });
				
          let view = new MapView({
            container: 'viewDiv',
            map: map,
            center: cityCenter,
            zoom: 12,
            ui: {
              components: ['zoom', 'compass']
            }
          });
          //点击后地图会高亮
         view.on('click', (event) => {
            view.hitTest(event).then(response => {
              console.log(response);
              let result = response.results[0];
              if (result && result.graphic) {
                let graphic = result.graphic;
                //自定义高亮
                //这里的几何图形是面状,配置graphic的symbol为fillSymbol
                graphic.symbol = {
                  type: 'simple-fill',
                  color: 'red',
                  outline: {
                    color: [128, 128, 128, 0.5],
                    width: '0.5px'
                  }
                };
                view.graphics.removeAll();//清除上一次点击目标
                view.graphics.add(graphic);//添加新的点击目标
              }
            });
          });
         // 有时会地图服务需要注册唯一码,
          $.ajax({
            url: 'http://**********/arcgis/tokens/',
            type: 'POST',
            data: {
              username: '',
              password: '',
              client: '',
              expiration: '',
              f: 'json'
            },
            dataType: 'json',
            success: function (data, response, status) {
           		//获取后,使用下列方法注册,server字段对应要请求的域名
              IdentityManager.registerToken({
                server: 'http://******/arcgis/rest/services',
                token: data.token
              });
          		
          		//自定义弹窗信息
              const popupTemplate = {
                title: '信息',
                content: `
                  <p>项目名称:{JSXMMC}</p>
                  <p>时间:{REMARK}</p>
                `
              };
              // 通过FeatureLayer方法还可以进行自定义筛选,通过definitionExpression字段进行筛选
              const fl = new FeatureLayer({
                url: 'http://******/arcgis/rest/services/SmartConstruction/20210918Construction/FeatureServer/1',
                popupTemplate: popupTemplate,
                outFields: ['*'],
                definitionExpression: `JSXMMC like '%面粉厂%'`
              });
              map.add(fl);
            }
          });
        }
      );
    }
  };
</script>

<style scoped>
  #viewDiv {
    position: absolute;
    width: 100%;
    height: 80vh;
  }
</style>

【ArcGIS JS】深入解析ArcGIS API for JavaScript加载天地图WMTS服务的核心机制 本文深入解析了在ArcGIS API for JavaScript中加载天地图WMTS服务的核心机制与实战配置。文章详细拆解了WMTSLayer的工作原理,重点攻克了坐标系、DPI设置、TileInfo构建以及图片格式兼容性等关键难点,并提供了完整的代码示例和常见问题排查指南,帮助开发者高效集成天地图服务。 阅读详情

相关推荐

ArcGIS API for Javascript3.23加载天地图

与上一篇提到的方法一样,加载天地图也是通过TiledMapServiceLayer来自定义天地图图层模块。本篇以加载矢量地图为例,讲解如何自定义图层模块以及加载显示图层。加载各类天地图的效果图:【1】矢量图 【2】影像图 【3】地形图 。

佯佯DESIGNER 3316

ArcGis for JavaScript 加载天地图的WFS服务流程

需要配置代理,代理可以从下面的地址下载,然后部署 https://github.com/Esri/resource-proxy/releases 参考地址: https://blog.youkuaiyun.com/weixin_33720956/article/details/89835658 2、需要把项目的访问地址和配置的代理地址通过nginx代理到一起。 3、完整代码 <!DOCTYPE html> <html> <head> <meta ht..

u011276213的博客 2796

ArcGIS API for Javascript4.10加载天地图(墨卡托投影)

本篇主要介绍利用ArcGIS API for Javascript 4版本的最新版本4.10加载天地图的矢量底图、影像地图和地形图,以加载矢量地图为例,我们通过扩展BaseTileLayer来自定义矢量地图图层TiandiMapLayer模块。

佯佯DESIGNER 4853

获取天地图API并调用不同的地图API接口

第一点:我们可以发现地图服务列表,即下面这个表中服务地址的不同点就在于我框选出来的部分,他们代表了不同的地图,就比如矢量底图中的vec_c 和vec_w两种名字代表了两种投影坐标,然后我们看官方给的请求示例地址,即上面的图中我框选的内容img_w代表的是影像底图球面墨卡托投影,所以后面的一串代码中的参数要和img_w对应,LAYER=img,TILEMATRIXSE=w。可以看到矢量图,影像图,注记图等2维地图,还可以看到3D地图api,所以一般就可以满足我们的日常使用了。

weixin_55684685的博客 1万+

Arcgis api for js 3.x调用浙江省天地图

Arcgis api for js 3.x调用浙江省天地图代码坑点 代码 参照浙江天地图的调用说明http://www.zjditu.cn/resource/apihelp,编写代码调用地wmts天图服务。 &lt;!DOCTYPE html&gt; &lt;html&gt; &lt;head&gt; &lt;meta charset="utf-8"&gt; &lt;meta n...

qq_28148071的博客 1664

arcgis for javascript API3.13 加载天地图卫星影像

采用arcgis for javascript  API 3.13, 用其中的esri.layers.TiledMapServiceLayer,这个类可以完成对切片地图的加载,ArcOnline本身自带一个影像地图的,但是缩放后效果不好,所以本人在一个系统中不得不采用天地图的底图。可以看到最后的效果中,有一个天地图的水印。直接上代码了            declare("my.Portlan

GISlv的专栏 5479

Arcgis Api for Js 加载天地图的初步配置工作

(1)天地图默认使用 CGCS2000 坐标系(中国大地坐标系2000),因此实际使用需要时候若使用WGS84,需要转换。(2)天地图的瓦片服务属于 ​WMTS 标准服务,因此必须通过 WebTileLayer 加载并显式声明 tileInfo,包括完整的 lods 数组。完整代码如下,后续还需要构建配置Map、MapView、TileLayer、BaseMap进行图层加载。(3)构建天地图的基本配置。(2)申请天地图个人密钥。// 底图URL模板。(1)导入相关的模块。

weixin_74791403的博客 1039

arcgis api for js 克里金插值可自定义涂色方式 克里金插值 添加到天地图

// points : 点数据 ,示例[[经度、纬度、值],[经度、纬度、值]] //color: 颜色 ,示例['#fed985', '#fdbd6d', '#fb9d59', '#f57748', '#e85938', '#d73d29'] //values_list:等级范围(可选,不选的时候默认为等间距划分等级,等级数量等于颜色个数)示例[0,1,2,3,4,5,6]. //world ...

天道酬勤、业道酬信! 2188

[WebGIS] ArcGIS api for javascript3.21版本加载天地图

介绍 文件 TDTLayerjs TDTLayerjs indexhtml或jspflt前端文件 结果介绍ArcGIS api for Javascript3.21版本加载天地图 目录介绍: js TDTAnnoLayer.js //天地图注解图层 TDTLayer.js //天地图注解图层 index.html //视图文件 下载链接文件TDTLayer.js封装加

geodoer 8512

Openlayers 教程 15 - openlayers 设置蓝黑色底图,自定义修改天地图颜色

项目大屏展示添加动态地图,获取瓦片,修改颜色来实现加载天地图蓝黑色底图。

非科班Java出身GISer的博客 2万+

arcgis api for js接入天地图影像(墨卡托)(arcgis api for js篇.7)

GIS之家总目录(订阅之前请先查看该博客) GIS之家:openlayer+mapbox+arcgis api for js等相关内容的介绍 地图之家总目录 地图之家:cesium+leaflet+地图数据+地图工具等相关内容的介绍 文章末尾处提供保证可运行完整代码包,运行如有问题,可“私信”博主。 效果如下所示: 下面献上完整代码,代码重要位置会做相应解释 <html> <head> <meta charset="utf-8" /> <m.

GIS之家家长 599

GIS开发之二维地下管线综合管理系统(Arcgis)第四节 使用arcgis api for js 加载天地图

GIS开发之二维地下管线综合管理系统(Arcgis)第四节 使用arcgis api for js 加载天地图核心js文件调用方式调用结果 这里写目录标题核心js文件调用方式调用结果 核心js文件 #通过定义加载天地图js文件,引用并组织天地图的切片, 天地图的切片地图可以通过esri.layers.TiledMapServiceLayer来加载,如下: define([“dojo/_base/declare”, “esri/layers/tiled”], function (declare) { retu

wk2133的博客 950

arcgis api for js接入天地图(经纬度)(arcgis api for js篇.6)

GIS之家总目录(订阅之前请先查看该博客) GIS之家:openlayer+mapbox+arcgis api for js等相关内容的介绍 地图之家总目录 地图之家:cesium+leaflet+地图数据+地图工具等相关内容的介绍 文章末尾处提供保证可运行完整代码包,运行如有问题,可“私信”博主。 效果如下所示: 下面献上完整代码,代码重要位置会做相应解释 <!DOCTYPE html> <html style="height: 100%;"> <head> .

GIS之家家长 456

ArcGIS API for JavaScript 加载天地图WMTS图层

欢迎访问我的博客GISer空间。 0. 预览 http://huanglii.github.io/TianDiTu/index.html 在GitHub上查看 1. index.html <!DOCTYPE html> <html>...

1184

ArcGIS API for JavaScript4.10实现天地图加载与自定义图层

ArcGIS API for JavaScript 4.10 是一款为开发者提供的一组功能强大的工具和组件,用于构建定制的、交互式的地理空间应用程序。它的推出,标志着地理信息系统(GIS)技术在Web平台上的进一步深化和拓展。本章将带您快速浏览API的主要特点,并简要介绍它如何使Web地图应用开发变得简单。天地图是中国国家测绘地理信息局提供的地理信息服务,它为用户提供包括矢量地图、影像地图、地形图等多种地图服务。

weixin_35238815的博客 1464

arcgis 天地图风格style

arcgis 天地图风格style,包含:字体库;矢量地图符号库_V2.0 for ArcGIS10;影像地图符号库__V2.0 for ArcGIS10;晕渲地图符号库__V2.0 for ArcGIS10

上一篇: 面试题记录
下一篇: RxJS入门教学
言只  石皮
博客等级 码龄7年 21粉丝 38原创
评论
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

个

红包个数最小为10个

元

红包金额最低5元

当前余额3.43元 前往充值 >
需支付:10.00元
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

言只 石皮

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付元
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值