重写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;
}
});
});
版权声明:本文博主原创文章。博客,未经同意不得转载。
重写ArcGIS的TiledMapServiceLayer呼叫世界地图图块的更多相关文章
- 重写ArcGIS的TiledMapServiceLayer调用天地图瓦片
require(["esri/layers/TiledMapServiceLayer"], function () { dojo.declare("com.StrongI ...
- Windows phone 8 学习笔记(5) 图块与通知(转)
基于metro风格的Windows phone 8 应用提到了图块的概念,它就是指启动菜单中的快速启动图标.一般一个应用必须有一个默认图块,还可以有若干个次要图块.另外,通知与图块的关系比较密切,我们 ...
- C#实现在CAD图纸中插入另一个DWG图块的代码
C#实现在CAD图纸中插入另一个DWG图块的代码 PromptPointResult ppr = ed.GetPoint("请选择插入点:"); Point3d pt = ppr. ...
- Windows phone 8 学习笔记(5) 图块与通知
原文:Windows phone 8 学习笔记(5) 图块与通知 基于metro风格的Windows phone 8 应用提到了图块的概念,它就是指启动菜单中的快速启动图标.一般一个应用必须有一个默认 ...
- Tiled Editor 图块的两种导入方式
一.图块集图块的导入. 打开或者创建地图后,新建 新图块. 弹出新图块面板 图块类型选择 "基于图块集图块",一定要选择"嵌入地图",否则需要另存为其他类型的文 ...
- 小记——关于Tilemap图块索引编码
图集 地图 TileMap 导出的 .Tmx 文件记录了地图所有信息,其中编辑好的图块信息会存放在每个图层的 Data 节点下.以下是一个 10x10 的图层,可以看到,Data 节点记录了每个图块对 ...
- 梦想CAD控件图块COM接口知识点
梦想CAD控件图块COM接口知识点 图块是将多个实体组合成一个整体,并给这个整体命名保存,在以后的图形编辑中图块就被视为一个实体.一个图块包括可见的实体如线.圆.圆弧以及可见或不可见的属性数据.图块的 ...
- 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 ...
- CAD插入非等比例的图块
主要用到函数说明: _DMxDrawX::InsertBlock 向控件数据库中插入一个图块,不用它插入匿名块.详细说明如下: 参数 说明 BSTR pszDwgFileName 图块定义的dwg 文 ...
随机推荐
- bzoj 1874 取石子游戏 题解 & SG函数初探
[原题] 1874: [BeiJing2009 WinterCamp]取石子游戏 Time Limit: 5 Sec Memory Limit: 162 MB Submit: 334 Solved ...
- NOI 评价体系 arbiter 安装方法 常见的问题 移植
#!/bin/bash AppPath="$PWD" 读取当前文件夹 echo "Arbiter is installing..." sudo apt-ge ...
- php学习笔记--高级教程--读取文件、创建文件、写入文件
打开文件:fopen:fopen(filename,mode);//fopen("test.txt","r"): 打开模式:r 仅仅读方式打开,将文件指针指向 ...
- mac 下有些工具 app 推荐
打开推荐报价mac在工具app Evernote的 Evernote的贬值,课堂笔记软件,其主要功能是记录笔记,假设你想,它可用于使todo list, 甚至gtd, 或收集的知识归纳 Doit.im ...
- SICP-2锻炼.34
[锻炼2.34] 为x给定值,找到一个多项式x的值,它也可以被形式化为累积. 下多项式的值: an*x^n + an-1*x^n-1 + .... + a1*x + a0 採用著名的Horner规则, ...
- 【Android进阶】SlidingMenu实现侧滑栏效果的实现
public class MainActivity extends Activity { @Override protected void onCreate(final Bundle savedIns ...
- Chapter 1 Securing Your Server and Network(6):为SQL Server访问配置防火墙
原文:Chapter 1 Securing Your Server and Network(6):为SQL Server访问配置防火墙 原文出处:http://blog.csdn.net/dba_hu ...
- 【转】linux建立软链接
实例:ln -s /home/gamestat /gamestat linux下的软链接类似于windows下的快捷方式 ln -s a b 中的 a 就是源文件,b是链接文件名,其作用是当进入 ...
- 什么场景Hbase
Hbase不太复杂,但适合于存储大量的数据资料.因为是商城系统:用户.商品.订单,店,卖家,这些数据是不适合复杂的关系Hbase. 有一个非常大的数据量订购,并经常来计算.只考虑存款订单Hbase. ...
- LeetCode——Pascal's Triangle
Given numRows, generate the first numRows of Pascal's triangle. For example, given numRows = 5, Retu ...