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. Altium Designer chapter3总结

    绘制电路原理图中需要注意的如下: (1)元件库的操作:元件库的加载和卸载.查找元件. (2)元件操作: 1.放置元件(元件库中,place part,快捷键)中place part中的history可 ...

  2. php跨域的几种方式

    PHP实现跨域的几种形式 1.JSONP(JSON with padding)原理 利用html里面script标签可以加载其他域下的js这一特性,使用script src的形式来获取其他域下的数据, ...

  3. java包装类,自动装箱,拆箱,以及基本数据类型与字符串的转换

    package cn.learn; import java.util.ArrayList; /* 包装类 java.lang中,基本运算类型效率高 装箱:把基本类型数据包装为包装类 1.构造方法 In ...

  4. Spring数据库连接池 c3p0、dbcp、spring-jdbc

    在用dbcp的时候 后面加上 destroy-method="close" 销毁的方法没事 但是用 spring的jdbc就会报错 提示找不到close这个方法  这是为什么? D ...

  5. spring-第二篇ApplicationContext国际化及事件机制

    1.ApplicationContext接口获取spring容器      ApplicationContext是BeanFactory接口的子接口,BeanFactory的常用实现类是Default ...

  6. shell脚本从入门到精通(初级)之入门篇

    写在开头 本文是阅读<Linux命令行与shell脚本编程大全>时的一些笔记,主要是shell脚本的一些基本语法, 还有很多细节和高级内容没有写到. 笔者也是shell script菜鸟, ...

  7. 全栈开发系列学习2——django项目搭建

    项目代码:http://yunpan.cn/cHajgT4HvgHqx (提取码:8350) 配置项目: 1. 首先确保你的机器安装了python和pip,这两种安装比较简单,这里就不说了. 2. 在 ...

  8. Checklist: 2019 05.01 ~ 06.30

    Golang Lessons learned porting 50k loc from Java to Go Five things that make Go fast Simple techniqu ...

  9. 一、Angular环境的搭建

    1.安装nodejs (1) 下载网址https://nodejs.org/en/download/ (2) 双击进行安装 (3) 打开命令行,输入node -v 和 npm -v 查看是否安装成功 ...

  10. 【LeetCode】设计题 design(共38题)

    链接:https://leetcode.com/tag/design/ [146]LRU Cache [155]Min Stack [170]Two Sum III - Data structure ...