From d74b495736f0c04522ec54274b70fed0ded2878d Mon Sep 17 00:00:00 2001
From: zhongrj <646384940@qq.com>
Date: Tue, 27 Jun 2023 11:30:06 +0800
Subject: [PATCH] 任务新增导出

---
 public/map/widgets/map/TianDiTuLayer.js |  176 ++++++++++++++++++++++++++++++++++++++++++++++++++++++++++
 1 files changed, 176 insertions(+), 0 deletions(-)

diff --git a/public/map/widgets/map/TianDiTuLayer.js b/public/map/widgets/map/TianDiTuLayer.js
new file mode 100644
index 0000000..b7ac5bf
--- /dev/null
+++ b/public/map/widgets/map/TianDiTuLayer.js
@@ -0,0 +1,176 @@
+define(['esri/layers/TiledMapServiceLayer',
+        'esri/SpatialReference',
+        'esri/geometry/Extent',
+        'esri/layers/TileInfo',
+        'dojo',
+        "dojo/_base/lang",
+        "dojo/on"
+        ],
+      function(TiledMapServiceLayer,
+               SpatialReference,
+               Extent,
+               TileInfo,
+               dojo,
+               lang,
+               on
+               ){
+          
+        return dojo.declare("TianDiTuLayer", TiledMapServiceLayer, {
+        	_mercatortype:"geo",//geo|mercator
+        	url:"",
+        	_layer:"",
+        	displayLevels:[],//从0开始
+        	_levelIndex:null,
+        	_extentChangeHandler:null,
+          constructor: function(mercatortype,url,layer,options) {
+        	  this.mercatortype = mercatortype;
+              this.url = url;
+              this._layer = layer;
+              this._tilematrixSet="";
+              this.format="tiles",
+              lang.mixin(this, options);
+              if(this.displayLevels && this.displayLevels.length>0){
+            	  this._levelIndex={};
+            	  for(var i=0;i<this.displayLevels.length;i++){
+            		  this._levelIndex[this.displayLevels[i]]=this.displayLevels[i];
+            	  }
+              }
+        	 if(mercatortype == "geo")
+    		 {
+        		 this.spatialReference = new SpatialReference({ wkid:4326 });
+                 this.initialExtent = (this.fullExtent = new Extent(-180.0, -90.0, 180.0, 90.0, this.spatialReference));
+                 if(!this._tilematrixSet)
+                 	this._tilematrixSet = "c";
+                 this.tileInfo = new TileInfo({
+                     "rows" : 256,
+                     "cols" : 256,
+                     "dpi" : 90.71428571428571,
+                     "format" : "PNG32",
+                     "compressionQuality" : 0,
+                     "origin" : {
+                       "x" : -180,
+                       "y" : 90
+                     },
+                     "spatialReference" : {
+                     "wkid" : 4326
+                   },
+                     "lods" : [
+                       {"level" : 1, "resolution" : 0.703125, "scale" : 295497593.05875003},
+                         {"level" : 2, "resolution" : 0.3515625, "scale" : 147748796.52937502},
+                         {"level" : 3, "resolution" : 0.17578125, "scale" : 73874398.264687508},
+                         {"level" : 4, "resolution" : 0.087890625, "scale" : 36937199.132343754},
+                         {"level" : 5, "resolution" : 0.0439453125, "scale" : 18468599.566171877},
+                         {"level" : 6, "resolution" : 0.02197265625, "scale" : 9234299.7830859385},
+                         {"level" : 7, "resolution" : 0.010986328125, "scale" : 4617149.8915429693},
+                         {"level" : 8, "resolution" : 0.0054931640625, "scale" : 2308574.9457714846},
+                         {"level" : 9, "resolution" : 0.00274658203125, "scale" : 1154287.4728857423},
+                         {"level" : 10, "resolution" : 0.001373291015625, "scale" : 577143.73644287116},
+                         {"level" : 11, "resolution" : 0.0006866455078125, "scale" : 288571.86822143558},
+                         {"level" : 12, "resolution" : 0.00034332275390625, "scale" : 144285.93411071779},
+                         {"level" : 13, "resolution" : 0.000171661376953125, "scale" : 72142.967055358895},
+                         {"level" : 14, "resolution" : 8.58306884765625e-005, "scale" : 36071.483527679447},
+                         {"level" : 15, "resolution" : 4.291534423828125e-005, "scale" : 18035.741763839724},
+                         {"level" : 16, "resolution" : 2.1457672119140625e-005, "scale" : 9017.8708819198619},
+                         {"level" : 17, "resolution" : 1.0728836059570313e-005, "scale" : 4508.9354409599309},
+                         {"level" : 18, "resolution" : 5.3644180297851563e-006, "scale" : 2254.4677204799655},
+                         {"level" : 19, "resolution" : 0.000002682209014892578, "scale":1127.2338602399827}
+                  //  {"level" : 20, "resolution" : 0.000001341104507446289, "scale":563.6169301199914}
+                     ]
+                   });
+    		 }
+        	 else
+    		 {
+        		 this.spatialReference = new SpatialReference({ wkid:3857 });
+        		 this.fullExtent = this.initialExtent = new esri.geometry.Extent(-20037508.3427892,-20037508.3427892,20037508.3427892,20037508.3427892, new esri.SpatialReference({
+       	          wkid: 3857
+       	        }))
+        		 if(!this._tilematrixSet)
+        		 	this._tilematrixSet = "w";
+        		 this.tileInfo = new esri.layers.TileInfo({
+    		  		 "dpi": 96,   //必须,否则图错  90.71428571427429
+    		          "rows" : 256,
+    		            "cols" : 256,
+    		            "compressionQuality" : 0,
+    		            "origin" : {
+    		              "x" : -20037508.3427892,
+    		              "y" : 20037508.342787
+    		            },
+    		            "spatialReference" : {
+    		              "wkid" : 3857
+    		            },
+    		            "lods" : [
+    		              {"level" : 1, "resolution" : 78271.51696402048, "scale" :  2.958293554545656E8},
+    		              {"level" : 2, "resolution" :  39135.75848201024, "scale" : 1.479146777272828E8},
+    		              {"level" : 3, "resolution" : 19567.87924100512, "scale" : 7.39573388636414E7},
+    		              {"level" : 4, "resolution" : 9783.93962050256, "scale" : 3.69786694318207E7},
+    		              {"level" : 5, "resolution" : 4891.96981025128, "scale" : 1.848933471591035E7},
+    		              {"level" : 6, "resolution" : 2445.98490512564, "scale" : 9244667.357955175},
+    		              {"level" : 7, "resolution" : 1222.99245256282, "scale" : 4622333.678977588},
+    		              {"level" : 8, "resolution" : 611.49622628141, "scale" : 2311166.839488794},
+    		              {"level" : 9, "resolution" : 305.748113140705, "scale" : 1155583.419744397},
+    		              {"level" : 10, "resolution" : 152.8740565703525, "scale" : 577791.7098721985},
+    		              {"level" : 11, "resolution" : 76.43702828517625, "scale" : 288895.85493609926},
+    		              {"level" : 12, "resolution" : 38.21851414258813, "scale" : 144447.92746804963},
+    		              {"level" : 13, "resolution" : 19.109257071294063, "scale" : 72223.96373402482},
+    		              {"level" : 14, "resolution" : 9.554628535647032, "scale" : 36111.98186701241},
+    		              {"level" : 15, "resolution" : 4.777314267823516, "scale" : 18055.990933506204},
+    		              {"level" : 16, "resolution" : 2.388657133911758, "scale" : 9027.995466753102},
+    		              {"level" : 17, "resolution" :1.194328566955879, "scale" : 4513.997733376551},
+    		              {"level" : 18, "resolution" :0.5971642834779395, "scale" : 2256.998866688275},
+    		              {"level" : 19, "resolution" : 0.298582738909933, "scale": 1128.49943336487}
+    					  // {"level" : 20, "resolution" : 0.1492913694549665, "scale": 564.249716682435}
+    		              ]});
+    		 }
+            
+            this.loaded = true;
+            this.onLoad(this);
+          },
+
+          getTileUrl: function(level, row, col) {
+              var url=
+               this.url+"?SERVICE=WMTS&VERSION=1.0.0&REQUEST=GetTile&FORMAT="+this.format+"&TILEMATRIXSET="+this._tilematrixSet
+               +"&STYLE=default&LAYER="
+              +this._layer+"&TILEMATRIX="
+              +(level)
+              +"&TILEROW="
+              +row
+              +"&TILECOL="
+              +col;
+              
+              return url;
+      
+           },
+          setDisplayLevels:function(value)
+          {
+        	 this.displayLevels=value;
+        	 this._levelIndex={};
+        	 if(!this.displayLevels){
+        		 this._levelIndex=null;
+        		 return;
+        	 }
+        	 for(var i=0;i<this.displayLevels.length;i++){
+       		  this._levelIndex[this.displayLevels[i]]=this.displayLevels[i];
+       	  	}
+          },
+           _setMap: function(a, c, d, b) {
+            var map=a;
+            //控制显示级别
+            this._extentChangeHandler = map.on("extent-change",lang.hitch(this,function(evt){
+            	if(evt.levelChange){
+            		if(this._levelIndex && !this._levelIndex[evt.lod.level])
+			  		  	{
+			      		  this.hide();
+			  		  	}else
+			  		  	{
+			  		  		this.show();
+			  		  	}
+            	}
+            }));
+             return this.inherited(arguments);
+           },
+           _unsetMap: function(a, c) {
+           	this._extentChangeHandler.remove();
+            this.inherited(arguments);
+           }
+      });
+});

--
Gitblit v1.9.3