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. svg画圆环

    之前我已经分享了一篇css画圆环,为啥今天还要分享一篇svg画圆环呢? 原因是:css画圆环在部分ipone手机会有bug,最大张角为90°,所以圆环会有白色的间隙. 好了,开始代码展示: html: ...

  2. call,apply,bind的用法和细节差异

    call,apply,bind的用法 call,apply和bind都用来改变js中this对象的指向 var dog = { name:'dog', speak: function(value){ ...

  3. TensorFlow 安装报错的解决办法

    最近关注了几个python相关的公众号,没事随便翻翻,几天前发现了一个人工智能公开课,闲着没事,点击了报名. 几天都没有音信,我本以为像我这种大龄转行的不会被审核通过,没想到昨天来了审核通过的电话,通 ...

  4. style中各种选择器

    <!DOCTYPE html> <html lang="en"> <head> <meta charset="UTF-8&quo ...

  5. C# 值类型与引用类型的详解

    值类型与引用类型分这几种情况: 1.内存分为堆和栈,值类型的数据存储在栈中,引用类型的数据存储在堆中. 2.int numb=10,代码中的10是值类型的数据,numb只是一个指向10的变量而已.其中 ...

  6. linux驱动启动顺序

    首先,我们可以查看Linux内核编译完成后的System.map文件,在这个文件中我们可以看到macb(dm9161驱动模块)链接到了dm9000驱动之前,如下所示: c03b6d40 t __ini ...

  7. I2C走线技巧

  8. 二 shell 基础

    一   文件的 权限基础 文件有三类权限   user,group,other, 权限分为 r w x  代表数字分别为 4 2 1 修改权限命令 chmod 权限还有特殊权限,在执行的时候代表某一身 ...

  9. css3 清除浮动

    eg:三个div,父级div下面有两个div分别float:left和float:right <style> .container{width:400px;border:3px soild ...

  10. 简单使用vuex状态管理

    1.在使用vue-cli脚手架创建项目后 npm install vuex 2.创建store文件夹,结构如下: 3.store中 index.js代码如下: 4.入口文件main.js中引入stor ...