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. State Hook

    1 useState函数的第一个参数,是state变量的初始值. 2 每次渲染时,多个State Hook的顺序.数量都是一样的.(不能多.不能少) 3 state变量是只读的 4 state变量发生 ...

  2. MySQL 增删改语句

    # DML语言 /* 数据操作语言: 插入:insert 修改:update 删除: delete */ 一.插入语句 insert /* 语法: 方式一: insert into 表名(列名,..) ...

  3. Ajax局部刷新(使用JS操作)

    对于在不使用Ajax的情况下,使用JS来进行局部刷新,主要有如下的几步: 1. 得到XMLHttpRequest 2. 使用open方法打开连接 3. 设置请求头信息 4. 注册onreadystat ...

  4. let/const及块级作用域

    本系列是在平时阅读.学习.实际项目中有关于es6中的新特性.用发的简单总结,目的是记录以备日后温习:本系列预计包含let/const.箭头函数.解构.常用新增方法.Symbol.Set&Map ...

  5. Spring Boot静态资源

    1.4 SpringBoot静态资源 1.4.1 默认静态资源映射 Spring Boot 对静态资源映射提供了默认配置 Spring Boot 默认将 /** 所有访问映射到以下目录: classp ...

  6. 用php实现一个简单的爬虫,抓取电影网站的视频下载地址

    昨天没什么事,先看一下电影,就用php写了一个爬虫在视频网站上进行视频下载地址的抓取,这里总结一下抓取过程中遇到的问题 1:通过访问浏览器来执行php脚本这种访问方式其实并不适合用来爬网页,因为要受到 ...

  7. elementUI 导航栏点击之后改变背景色,背景色悬停

    一开始设置的是: .menuLeft .el-menu-item:hover{ background: #6db6ff !important; } .menuLeft .el-submenu__tit ...

  8. JS 逻辑非!简单总结

    !""                  true!"aaa"          false""==false          true ...

  9. jq中的ajax传参

        一.   jq中的Ajax传参有两种           1.通过url地址来传参    2.通过data来传递参数 1. url来传递参数 function GetQuery(id) { | ...

  10. 洛谷P1446/BZOJ1004 Cards Burnside引理+01背包

    题意:有n张牌,有R+G+B=n的3种颜色及其数量,要求用这三种颜色去染n张牌.n张牌有m中洗牌方式,问在不同洗牌方式下本质相同的染色方案数. 解法:这道题非常有意思,题解参考Hzwer学长的.我这里 ...