require(["esri/layers/TiledMapServiceLayer"], function () {

dojo.declare("com.StrongIt.Map.Layers.LayerTianditu", esri.layers.TiledMapServiceLayer, {
        _mapStyle: "",
        constructor: function (mapStyle, startLevel, endLevel) {
            this._mapStyle = mapStyle;
            this.spatialReference = new esri.SpatialReference({
                wkid: 4326
            });
            this.initialExtent = new esri.geometry.Extent(73.5, 4, 135, 53.5, this.spatialReference);
            this.fullExtent = new esri.geometry.Extent(-180.0, -90.0, 180.0, 90.0, this.spatialReference);
            this.tileInfo = new esri.layers.TileInfo({
                "dpi": "90.71428571427429",
                "format": "image/png",
                "compressionQuality": 0,
                "rows": 256,
                "cols": 256,
                "compressionQuality": 0,
                "origin": {
                    "x": -180,
                    "y": 90
                },
                "spatialReference": {
                    "wkid": 4326
                },
                "lods": this._getLods(startLevel, endLevel)
            });

this.loaded = true;
            this.onLoad(this);
        },

getTileUrl: function (level, row, col) {
                var serviceNum = col % 8;
                var mapInfo = this._getMapInfo();
                return "http://t"
                    + serviceNum
                    + ".tianditu.com/DataServer?T=" + mapInfo.mapName + "&" +
                    "X=" + col + "&" +
                    "Y=" + row + "&" +
                    "L=" + level;
        },

_getLods: function (startLevel, endLevel) {
            var lods = [];

var minScale = 590995186.1175;
            var maxResolution = 1.40625;
            
            var tempScale = minScale;
            var tempResolution = maxResolution;
            for (var i = 0; i <= endLevel; i++) {
                
                var lod = {
                    "level": i,
                    "resolution": tempResolution,
                    "scale": tempScale
                }
                if (i >= startLevel) {
                    lods.push(lod);
                }

tempScale = tempScale / 2;
                tempResolution = tempResolution / 2;
            }

return lods;
        },

_getMapInfo: function () {
            var result = {
                mapName: "",
                layerId: "",
                tileMatrixSetId: ""
            };
            if(this._mapStyle == "ImageBaseMap") {
                // 获取影像(底图)
                result.mapName = "img_c";
                result.layerId = "img";
                result.tileMatrixSetId = "c";
            } else if(this._mapStyle == "ImageCNNote") {
                // 获取影像(中文注记)
                result.mapName = "cia_c";
                result.layerId = "cia";
                result.tileMatrixSetId = "c";
            } else if(this._mapStyle == "ImageENNote") {
                // 获取影像(英文注记)
                result.mapName = "eia_c";
                result.layerId = "eia";
                result.tileMatrixSetId = "c";
            } else if(this._mapStyle == "TerrainBaseMap") {
                // 获取地形图(底图)
                result.mapName = "ter_c";
                result.layerId = "ter";
                result.tileMatrixSetId = "c";
            } else if(this._mapStyle == "TerrainCNNote") {
                // 获取地形图(中文注记)
                result.mapName = "cta_c";
                result.layerId = "cta";
                result.tileMatrixSetId = "c";
            } else if(this._mapStyle == "TerrainENNote") {
                // 获取地形图(英文注记)
            } else if(this._mapStyle == "VectorBaseMap") {
                // 获取地图(底图)
                result.mapName = "vec_c";
                result.layerId = "vec";
                result.tileMatrixSetId = "c";
            } else if(this._mapStyle == "VectorCNNote") {
                // 获取地图(中文注记)
                result.mapName = "cva_c";
                result.layerId = "cva";
                result.tileMatrixSetId = "c";
            } else if(this._mapStyle == "VectorENNote") {
                // 获取地图(英文注记)
                result.mapName = "eva_c";
                result.layerId = "eva";
                result.tileMatrixSetId = "c";
            }

return result;
        }
    });

});

重写ArcGIS的TiledMapServiceLayer调用天地图瓦片的更多相关文章

  1. 重写ArcGIS的TiledMapServiceLayer呼叫世界地图图块

    require(["esri/layers/TiledMapServiceLayer"], function () {     dojo.declare("com.Str ...

  2. Arcgis for js载入天地图

    综述:本节讲述的是用Arcgis for js载入天地图的切片资源. 天地图的切片地图能够通过esri.layers.TiledMapServiceLayer来载入.在此将之进行了一定的封装,例如以下 ...

  3. OpenLayer3调用天地图示例

    最近,工作中有需要用Openlayer3脚本库调用天地图的wmts服务接口,由于这两个都是刚开始接触,所以是摸着石头过河,遇到了地图显示不了的问题,虽然官网http://www.zjditu.cn/r ...

  4. Leaflet 调用百度瓦片地图服务

    在使用 leaflet 调用第三方瓦片地图服务的项目,主要谷歌地图.高德地图.百度地图和 OSM 地图,与其他三种地图对比,百度地图的瓦片组织方式是不同的.百度从中心点经纬度(0,0)度开始计算瓦片, ...

  5. 如何使用借助python完成 ARCGIS工具箱的调用

    上个月使用python调用arcgis工具箱完成了火点txt文件转shp文件的小功能, 感觉很不错, 写下这篇博客希望对大家有所帮助. 1.环境介绍: 系统: win8.1(64位) arcgis:d ...

  6. arcgis js之调用wms服务

    arcgis js之调用wms服务 定义: export const tdtlayer = async () => { let WMSLayer = await arcgisPackage.WM ...

  7. 2019年以后ArcGIS 调用天地图的资源URL

    2019年1月1日起,天地图做出如下变更,导致直接在Arcgis/ArcMap中添加WMTS服务不能用了. 国家天地图解释的很清楚,注册个人用户就可以了. 原有调用方式不变,只要在URL 后添加“&a ...

  8. 重写 final关键字 多态调用子类特有的属性及行为(向上向下转型)

    1.override 重写:在继承中,子类与父类方法名相同,参数列表相同,的方法叫重写,与返回值有关;  主要应用于系统升级. 2.final 关键字: 可修饰:1.类-->被修饰后该类不能被继 ...

  9. 一个对象toString()方法如果没有被重写,那么默认调用它的父类Object的toString()方法,而Object的toString()方法是打印该对象的hashCode,一般hashCode就是此对象的内存地址

    昨天因为要从JFrame控件获取密码,注意到一个问题,那就是用toString方法得到的不一定是你想要的,如下: jPasswordField是JFrame中的密码输入框,如果用下面的方法是得不到密码 ...

随机推荐

  1. Python笔记(二十)_多态、组合

    多态 对于函数中的变量,我们只需要知道它这个变量是什么类,无需确切地知道它的子类型,就可以放心地调用类的方法,而具体调用的这个方法是作用在父类对象还是子类对象上,由运行时该对象的确切类型决定,这就是多 ...

  2. Pair Testing

    All-Pairs Testing is a test design method to deal with the combinatorics problem of defining test ca ...

  3. TCP协议-流量控制

    流量控制是通过滑动窗口来实现控制的.使用了坚持定时器,防止发送失败导致死锁.

  4. MySQL-第六篇DML语句

    1.DML主要操作数据表里的数据,主要完成3个任务: 1>insert:插入数据.格式:insert into ... 2>delete:删除数据.格式:delete from ... 3 ...

  5. Angular2+之模态框-使用ngx-bootstrap包中的模态框组件实现

    模态框是项目中经常会用到的一个公共功能,通常会被用左提示框或者扩展选项框. 下面,我用一个小例子来简单展示实现模态框功能的过程: 1.为项目加包: ng add ngx-bootstrap 2.在xx ...

  6. Codeforces - 1194D - 1-2-K Game - dp

    https://codeforc.es/contest/1194/problem/D 打个n=30的表好像看出了规律. 其实假设k==3,那么 sg[0]=0, sg[1]=mex{sg[0]}=1, ...

  7. python学习第十一天列表的分片和运算

    列表的分片也叫切片,也就是从列表中取出一段赋值给另外一个变量,列表运算就是可以进行比较运算,连接运算,乘法运算等. 1,列表的分片 n1=[1,2,3,4,5,6,7,8,9] n2=[1:3] 包含 ...

  8. POI之Excel文档增删改查

    需要引用apache第三方lib库poi 支持xls.xlsx格式excel读写操作 package com.hua.excel; import java.io.File;import java.io ...

  9. vue2.0在IE11无法打开的解决办法

    npm 安装bebel-polyfill npm install --save-dev babel-polyfill 在webpack.base.conf.js文件中将 module.exports ...

  10. jsp页面必填项如何加红星号*

    1.加*号 并且设置*号大小 <span style="color:red; font-size: 20px">*</span>