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.StrongI ...

  2. Windows phone 8 学习笔记(5) 图块与通知(转)

    基于metro风格的Windows phone 8 应用提到了图块的概念,它就是指启动菜单中的快速启动图标.一般一个应用必须有一个默认图块,还可以有若干个次要图块.另外,通知与图块的关系比较密切,我们 ...

  3. C#实现在CAD图纸中插入另一个DWG图块的代码

    C#实现在CAD图纸中插入另一个DWG图块的代码 PromptPointResult ppr = ed.GetPoint("请选择插入点:"); Point3d pt = ppr. ...

  4. Windows phone 8 学习笔记(5) 图块与通知

    原文:Windows phone 8 学习笔记(5) 图块与通知 基于metro风格的Windows phone 8 应用提到了图块的概念,它就是指启动菜单中的快速启动图标.一般一个应用必须有一个默认 ...

  5. Tiled Editor 图块的两种导入方式

    一.图块集图块的导入. 打开或者创建地图后,新建 新图块. 弹出新图块面板 图块类型选择 "基于图块集图块",一定要选择"嵌入地图",否则需要另存为其他类型的文 ...

  6. 小记——关于Tilemap图块索引编码

    图集 地图 TileMap 导出的 .Tmx 文件记录了地图所有信息,其中编辑好的图块信息会存放在每个图层的 Data 节点下.以下是一个 10x10 的图层,可以看到,Data 节点记录了每个图块对 ...

  7. 梦想CAD控件图块COM接口知识点

    梦想CAD控件图块COM接口知识点 图块是将多个实体组合成一个整体,并给这个整体命名保存,在以后的图形编辑中图块就被视为一个实体.一个图块包括可见的实体如线.圆.圆弧以及可见或不可见的属性数据.图块的 ...

  8. CAD插入图块前修改图块文字

    1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 3 ...

  9. CAD插入非等比例的图块

    主要用到函数说明: _DMxDrawX::InsertBlock 向控件数据库中插入一个图块,不用它插入匿名块.详细说明如下: 参数 说明 BSTR pszDwgFileName 图块定义的dwg 文 ...

随机推荐

  1. Android开发之Handler和Looper的关系

              关于Handler的总结. Message:消息,当中包括了消息ID,消息处理对象以及处理的数据等,由MessageQueue统一列队,终由Handler处理. Handler:处 ...

  2. RH033读书笔记(7)-Lab 8 Introduction to String Processing

    Lab 8 Introduction to String Processing Sequence 1: Exercises in string processing 1. Other than the ...

  3. OpenCV面、人眼检测

    /* 功能:实现对眼睛.脸部的跟踪. 版本号:1.0 时间:2014-4-27 */ #include <opencv2/objdetect/objdetect.hpp> #include ...

  4. [LeetCode92]Reverse Linked List II

    题目: Reverse a linked list from position m to n. Do it in-place and in one-pass. For example:Given 1- ...

  5. web报告工具FineReport在使用方法和解决方案常见错误遇到(一)

    FineReport在使用方法和解决方案常见错误遇到(一) 这里写的开胃菜.我希望我们能理清自己的问题和解决办法干出来的,Mark一点点.有利于所有. 失败搜索出,如果有一个文件,看看你的度娘那里.看 ...

  6. C++使用对象指针

    //定义结构 Box.h: #ifndef BOX_H #define BOX_H struct Box{ double length; double width; double height; do ...

  7. 经验19--C#大事

    以前学过C#大事.但我还没有搞懂怎么弄. 这一次,他们下进行了研究. 1.定义参数类,对于参数的传递活动.(可以省略) public class UserEventArgs     {         ...

  8. Redis源代码分析(23)--- CRC循环冗余算法RAND随机数的算法

    他今天就开始学习Redis源代码的一些工具来实现,在任何一种语言工具.算法实现的原理应该是相同的,一些比較经典的算法.比方说我今天看的Crc循环冗余校验算法和rand随机数产生算法. CRC算法全称循 ...

  9. 【C语言探索之旅】 第一部分第八课:第一个C语言小游戏

    ​ 内容简介 1.课程大纲 2.第一部分第八课:第一个C语言小游戏 3.第一部分第九课预告: 函数 课程大纲 我们的课程分为四大部分,每一个部分结束后都会有练习题,并会公布答案.还会带大家用C语言编写 ...

  10. XCL-Charts绘画面积图(AreaChart) 例1

    样本区域地图,发现区域图的时候把做向上注视位置图更具优势的管理.在改变. 区域图网格和轴是不一样的处理与其它图, 它是用来表示其影响范围的覆盖范围,车桥无段伸出. 在这里下处理. watermark/ ...