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


    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;
            }
        });


    });

    版权声明:本文博主原创文章。博客,未经同意不得转载。

  • 相关阅读:
    C# 特性学习笔记
    Nhibernate学习的第二天
    Nhibernate学习的第一天
    SQL循环添加表中的字段
    加班
    bat文件重启SQL服务和IIS服务
    判断是不是手机访问的网站
    解决Ueditor 不兼容IE7 和IE8
    实现链表的初始化,按值查找,插入,删除
    判断任一二叉树,是否为满二叉树.(输出二叉树,节点总数,二叉树深度)
  • 原文地址:https://www.cnblogs.com/bhlsheji/p/4794828.html
Copyright © 2020-2023  润新知