arcgis api 4.x加载天地图(经纬度和墨卡托投影)(一篇文章搞透天地图加载)

主要说明:

1、天地图影像分两种经纬度投影(WKID:4490)和墨卡托投影两种,arcgis默认为墨卡托坐标系(3857),可以切换二维/三维,加载经纬度切片时view需要设置wkid:4326

2、2019年1月1日以后使用天地图需要自己申请token,免费申请

3、天地图官网给的各种天地图资源URL地址:

        http://lbs.tianditu.gov.cn/server/MapService.html

ter:地形

img:影像

vec:矢量

cia:影像注记

cva:矢量注记

cta:地形注记

c:经纬度投影

w:web墨卡托投影

矢量底图系列:

  • 天地图影像:
url="http://t0.tianditu.com/img_c/wmts?SERVICE=WMTS&request=GetTile&version=1.0.0&tk=535cc0eb1&LAYER=img&tileMatrixSet=c&style=default&format=tiles&TileMatrix="+level+"&TileRow="+row+"&TileCol="+col;
  • 影像注记:
"http://t0.tianditu.com/cia_c/wmts?SERVICE=WMTS&request=GetTile&version=1.0.0&tk=535c46d1&LAYER=cia&tileMatrixSet=c&style=default&format=tiles&TileMatrix="+level+"&TileRow="+row+"&TileCol="+col;
  • 天地图矢量:
"http://t0.tianditu.com/vec_c/wmts?SERVICE=WMTS&request=GetTile&version=1.0.0&tk=535cc0ebf6d1&LAYER=vec&tileMatrixSet=c&style=default&format=tiles&TileMatrix="+level+"&TileRow="+row+"&TileCol="+col;
  • 矢量注记:
"http://t0.tianditu.com/cva_c/wmts?SERVICE=WMTS&request=GetTile&version=1.0.0&tk=535cc6d1&LAYER=cva&tileMatrixSet=c&style=default&format=tiles&TileMatrix="+level+"&TileRow="+row+"&TileCol="+col;

备注:url地址中对应修改这几项:img_c表示矢量影像;LAYER=img,表示影像;tileMatrixSet=c:表示是地理坐标系

4、arcgis api加载方式包括两种,WebTileLayer(切片)和WMTSLayer

一、WebTileLayer方式加载墨卡托投影

var map = new Map({
        // basemap: "streets"
      });
      var view = new MapView({
        container: "viewDiv",
        map: map,
        zoom: 9,
        center: [120, 30]
      });
      var tdtMap_img = new WebTileLayer({//天地图影像
        urlTemplate: "https://{subDomain}.tianditu.gov.cn/img_w/wmts?SERVICE=WMTS&REQUEST=GetTile&VERSION=1.0.0&LAYER=img&STYLE=default&TILEMATRIXSET=w&FORMAT=tiles&TILECOL={col}&TILEROW={row}&TILEMATRIX={level}&tk=1",
        subDomains: ["t0","t1","t2","t3","t4","t5","t6","t7"],
        copyright: "天地图影像"
      });
      var tdtMap = new WebTileLayer({//天地图
        urlTemplate: "http://{subDomain}.tianditu.gov.cn/vec_w/wmts?SERVICE=WMTS&REQUEST=GetTile&VERSION=1.0.0&LAYER=vec&STYLE=default&TILEMATRIXSET=w&FORMAT=tiles&TILECOL={col}&TILEROW={row}&TILEMATRIX={level}&tk=1072d9",
        subDomains: ["t0","t1","t2","t3","t4","t5","t6","t7"],
        copyright: "天地图"
      })
      var tdtMap_anno = new WebTileLayer({//天地图注记
        urlTemplate: "http://{subDomain}.tianditu.gov.cn/cva_w/wmts?SERVICE=WMTS&REQUEST=GetTile&VERSION=1.0.0&LAYER=vec&STYLE=default&TILEMATRIXSET=w&FORMAT=tiles&TILECOL={col}&TILEROW={row}&TILEMATRIX={level}&tk=107d",
        urlTemplate: "https://{subDomain}.tianditu.gov.cn/cva_w/wmts?SERVICE=WMTS&REQUEST=GetTile&VERSION=1.0.0&LAYER=cva&STYLE=default&TILEMATRIXSET=w&FORMAT=tiles&TILECOL={col}&TILEROW={row}&TILEMATRIX={level}&tk=1072d",
        subDomains: ["t0","t1","t2","t3","t4","t5","t6","t7"],
        copyright: "天地图注记"
      })
      // map.add(tdtMap_img);
      map.add(tdtMap);
      map.add(tdtMap_anno);

二、WebTileLayer方式加载经纬度投影

1、修改TileInfo信息。   'esri/layers/support/TileInfo'

var tileInfo = new TileInfo({
   dpi: 90.71428571427429,//解析度,即像素
   rows: 256,
   cols: 256,
   compressionQuality: 0,//压缩像素值
   origin: {
     x: -180,
     y: 90
   },
   spatialReference: {
      wkid: 4326
   },
   lods: [//定义平铺方案的细节级别数组
                    { level: 2, levelValue: 2, resolution: 0.3515625, scale: 147748796.52937502 },
                    { level: 3, levelValue: 3, resolution: 0.17578125, scale: 73874398.264687508 },
                    { level: 4, levelValue: 4, resolution: 0.087890625, scale: 36937199.132343754 },
                    { level: 5, levelValue: 5, resolution: 0.0439453125, scale: 18468599.566171877 },
                    { level: 6, levelValue: 6, resolution: 0.02197265625, scale: 9234299.7830859385 },
                    { level: 7, levelValue: 7, resolution: 0.010986328125, scale: 4617149.8915429693 },
                    { level: 8, levelValue: 8, resolution: 0.0054931640625, scale: 2308574.9457714846 },
                    { level: 9, levelValue: 9, resolution: 0.00274658203125, scale: 1154287.4728857423 },
                    { level: 10, levelValue: 10, resolution: 0.001373291015625, scale: 577143.73644287116 },
                    { level: 11, levelValue: 11, resolution: 0.0006866455078125, scale: 288571.86822143558 },
                    { level: 12, levelValue: 12, resolution: 0.00034332275390625, scale: 144285.93411071779 },
                    { level: 13, levelValue: 13, resolution: 0.000171661376953125, scale: 72142.967055358895 },
                    { level: 14, levelValue: 14, resolution: 8.58306884765625e-005, scale: 36071.483527679447 },
                    { level: 15, levelValue: 15, resolution: 4.291534423828125e-005, scale: 18035.741763839724 },
                    { level: 16, levelValue: 16, resolution: 2.1457672119140625e-005, scale: 9017.8708819198619 },
                    { level: 17, levelValue: 17, resolution: 1.0728836059570313e-005, scale: 4508.9354409599309 },
                    { level: 18, levelValue: 18, resolution: 5.3644180297851563e-006, scale: 2254.4677204799655 },
                    { level: 19, levelValue: 19, resolution: 2.68220901489257815e-006, scale: 1127.23386023998275 },
                    { level: 20, levelValue: 2, resolution: 1.341104507446289075e-006, scale: 563.616930119991375 }
                ]
            });

2、加载天地图,需要专门设置map、mapview的wkid为4326才能显示

     //加载天地图经纬度矢量
        var layer = new WebTileLayer('http://{subDomain}.tianditu.com/DataServer?T=vec_c&x={col}&y={row}&l={level}&tk=1',{
            // subDomains: ['t0','t1','t2','t3','t4','t5','t6','t7'],
            subDomains: ['t0'],
            tileInfo: tileInfo
        });
        //加载天地图经纬度影像
        var imagelayer = new WebTileLayer('http://{subDomain}.tianditu.com/DataServer?T=img_c&X={col}&Y={row}&L={level}&tk=1',{
             subDomains: ['t0','t1','t2','t3','t4','t5','t6','t7'],
            //subDomains: ['t0'],
            tileInfo: tileInfo
        });
        //加载天地图经纬度影像注记
        var zjimagelayer = new WebTileLayer('http://{subDomain}.tianditu.com/DataServer?T=cia_c&X={col}&Y={row}&L={level}&tk=17',{
             subDomains: ['t0','t1','t2','t3','t4','t5','t6','t7'],
            //subDomains: ['t0'],
            tileInfo: tileInfo
        });
        //加载天地图经纬度地形
        var terLayer = new WebTileLayer("http://{subDomain}.tianditu.com/DataServer?T=ter_c&X={col}&Y={row}&L={level}&tk=1", {
                subDomains: ['t0'],
                tileInfo: tileInfo
        });
     var map = new Map({
            spatialReference : {
              wkid : 4326
            },
            basemap: {
              baseLayers: [imagelayer,zjimagelayer]
            }
          });

        
        var mapview = new MapView ({
            container: "viewDiv",
            map: map,
            spatialReference : {
              wkid : 4326
            },
            //spatialReference:new SpatialReference({ wkid: 4490 }),
            // zoom: 12,
            //center: [ 122.7346125, 25.0563901 ],
        });

 

  • 4
    点赞
  • 25
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值