zoukankan      html  css  js  c++  java
  • Arcgis Server api for javascript加载天地图

    原理

      在API中,使用ArcGISTileMapServiceLayer 来加载瓦片地图,除了天地图之外,GOOGLE和BING的地图也采用这种方法进行加载。使用该地图类型加载,需要对几个地方进行修改:

    1、空间坐标系(this.spatialReference)

    2、地图范围(this.initialExtent)

    3、瓦片地图信息(this.tileInfo),这里需要对 esri.layers.TileInfo进行定义。其中包括了瓦片行列的数量("rows“,“clos”),坐标系("spatialreference"),不同等级的比例尺("lods")

    4.重写getTileUrl方法,以便API正确的获取所需的瓦片。

    天地图分析(转载自http://www.giser.net/?p=119

    天地图是中国区域内数据资源最全的地理信息服务网站,同时将为公众提供权威、可信、统一的地理信息服务,在我国的公共服务平台建设中将起到重要作用,那么为了在其他系统中使用天地图的地图服务,就很有必要对天地图的切图schema研究一番。

    下面就把天地图切图schema的主要参数列举一下:

    1 参考系 :wgs84 (4326)

    2 切图原点(-180,90)

    3 切图范围(-180,-90,180,90)

    4 切图级别18级,比例尺和分辨率分别为:
    {“level” : 1, “resolution” : 0.3515625, “scale” : 147748799.285417},
    {“level” : 2, “resolution” : 0.17578125, “scale” : 73874399.6427087},
    {“level” : 3, “resolution” : 0.087890625, “scale” : 36937199.8213544},
    {“level” : 4, “resolution” : 0.0439453125, “scale” : 18468599.9106772},
    {“level” : 5, “resolution” : 0.02197265625, “scale” : 9234299.95533859},
    {“level” : 6, “resolution” : 0.010986328125, “scale” : 4617149.97766929},
    {“level” : 7, “resolution” : 0.0054931640625, “scale” : 2308574.98883465},
    {“level” : 8, “resolution” : 0.00274658203125, “scale” : 1154287.49441732},
    {“level” : 9, “resolution” : 0.001373291015625, “scale” : 577143.747208662},
    {“level” : 10, “resolution” : 0.0006866455078125, “scale” : 288571.873604331},
    {“level” : 11, “resolution” : 0.00034332275390625, “scale” : 144285.936802165},
    {“level” : 12, “resolution” : 0.000171661376953125, “scale” : 72142.9684010827},
    {“level” : 13, “resolution” : 8.58306884765629E-05, “scale” : 36071.4842005414},
    {“level” : 14, “resolution” : 4.29153442382814E-05, “scale” : 18035.7421002707},
    {“level” : 15, “resolution” : 2.14576721191407E-05, “scale” : 9017.87105013534},
    {“level” : 16, “resolution” : 1.07288360595703E-05, “scale” : 4508.93552506767},
    {“level” : 17, “resolution” : 5.36441802978515E-06, “scale” : 2254.467762533835},
    {“level” : 18, “resolution” : 2.68220901489258E-06, “scale” : 1127.2338812669175}
    5 切图参数:
    格式:png
    大小:256*256
    dpi:96
    6 服务器个数:8个,分别为:

    http://tile0.tianditu.com/

    http://tile1.tianditu.com/

    http://tile2.tianditu.com/

    http://tile3.tianditu.com/

    http://tile4.tianditu.com/

    http://tile5.tianditu.com/

    http://tile6.tianditu.com/

    http://tile7.tianditu.com/

    7 切片请求方式:REST
    8 切片请求地址http://tile0.tianditu.com/DataServer?T=AB0512_Anno&X=1&Y=0&L=2
    其中x为列数,y为行数,l为级别

    代码(转载自http://www.cnblogs.com/gisvip/archive/2012/03/25/2417229.html

    dojo.declare("TDTLayer", esri.layers.TiledMapServiceLayer, { 
            constructor: function() { 
              this.spatialReference = new esri.SpatialReference({ wkid:4326 }); 
              this.initialExtent = (this.fullExtent = new esri.geometry.Extent(-180.0, -90.0, 180.0, 90.0, this.spatialReference)); 
      
              this.tileInfo = new esri.layers.TileInfo({ 
                "rows" : 256, 
                "cols" : 256, 
                "compressionQuality" : 0, 
                "origin" : { 
                  "x" : -180, 
                  "y" : 90 
                }, 
                "spatialReference" : { 
                  "wkid" : 4326 
                }, 
                "lods" : [ 
                  {"level" : 0, "resolution" : 0.703125, "scale" : 295497593.05875003}, 
                  {"level" : 1, "resolution" : 0.3515625, "scale" : 147748796.52937502}, 
                  {"level" : 2, "resolution" : 0.17578125, "scale" : 73874398.264687508}, 
                  {"level" : 3, "resolution" : 0.087890625, "scale" : 36937199.132343754}, 
                  {"level" : 4, "resolution" : 0.0439453125, "scale" : 18468599.566171877}, 
                  {"level" : 5, "resolution" : 0.02197265625, "scale" : 9234299.7830859385}, 
                  {"level" : 6, "resolution" : 0.010986328125, "scale" : 4617149.8915429693}, 
                  {"level" : 7, "resolution" : 0.0054931640625, "scale" : 2308574.9457714846}, 
                  {"level" : 8, "resolution" : 0.00274658203125, "scale" : 1154287.4728857423}, 
                  {"level" : 9, "resolution" : 0.001373291015625, "scale" : 577143.73644287116}, 
                  {"level" : 10, "resolution" : 0.0006866455078125, "scale" : 288571.86822143558}, 
                  {"level" : 11, "resolution" : 0.00034332275390625, "scale" : 144285.93411071779}, 
                  {"level" : 12, "resolution" : 0.000171661376953125, "scale" : 72142.967055358895}, 
                  {"level" : 13, "resolution" : 8.58306884765625e-005, "scale" : 36071.483527679447}, 
                  {"level" : 14, "resolution" : 4.291534423828125e-005, "scale" : 18035.741763839724}, 
                  {"level" : 15, "resolution" : 2.1457672119140625e-005, "scale" : 9017.8708819198619}, 
                  {"level" : 16, "resolution" : 1.0728836059570313e-005, "scale" : 4508.9354409599309}, 
                  {"level" : 17, "resolution" : 5.3644180297851563e-006, "scale" : 2254.4677204799655} 
                ] 
              }); 
      
              this.loaded = true; 
              this.onLoad(this); 
            }, 
      
            getTileUrl: function(level, row, col) { 
                    var levelMap = ""; 
                    if(level<10){ 
                            levelMap = "A0512_EMap"; 
                    }else if(level<12){ 
                            levelMap = "B0627_EMap1112"; 
                    }else if(level<17){ 
                            levelMap = "siwei0608"; 
                    } 
              return "http://tile0.tianditu.com/DataServer?T="+levelMap+"&"+ 
                                              "X=" + col + "&" + 
                      "Y=" + row + "&" + 
                      "L=" + (level*1+1); 
      
            } 
          }); 
            
          dojo.declare("TDTAnnoLayer", esri.layers.TiledMapServiceLayer, { 
            constructor: function() { 
              this.spatialReference = new esri.SpatialReference({ wkid:4326 }); 
              this.initialExtent = (this.fullExtent = new esri.geometry.Extent(-180.0, -90.0, 180.0, 90.0, this.spatialReference)); 
      
              this.tileInfo = new esri.layers.TileInfo({ 
                "rows" : 256, 
                "cols" : 256, 
                "compressionQuality" : 0, 
                "origin" : { 
                  "x" : -180, 
                  "y" : 90 
                }, 
                "spatialReference" : { 
                  "wkid" : 4326 
                }, 
                "lods" : [ 
                  {"level" : 0, "resolution" : 0.703125, "scale" : 295497593.05875003}, 
                  {"level" : 1, "resolution" : 0.3515625, "scale" : 147748796.52937502}, 
                  {"level" : 2, "resolution" : 0.17578125, "scale" : 73874398.264687508}, 
                  {"level" : 3, "resolution" : 0.087890625, "scale" : 36937199.132343754}, 
                  {"level" : 4, "resolution" : 0.0439453125, "scale" : 18468599.566171877}, 
                  {"level" : 5, "resolution" : 0.02197265625, "scale" : 9234299.7830859385}, 
                  {"level" : 6, "resolution" : 0.010986328125, "scale" : 4617149.8915429693}, 
                  {"level" : 7, "resolution" : 0.0054931640625, "scale" : 2308574.9457714846}, 
                  {"level" : 8, "resolution" : 0.00274658203125, "scale" : 1154287.4728857423}, 
                  {"level" : 9, "resolution" : 0.001373291015625, "scale" : 577143.73644287116}, 
                  {"level" : 10, "resolution" : 0.0006866455078125, "scale" : 288571.86822143558}, 
                  {"level" : 11, "resolution" : 0.00034332275390625, "scale" : 144285.93411071779}, 
                  {"level" : 12, "resolution" : 0.000171661376953125, "scale" : 72142.967055358895}, 
                  {"level" : 13, "resolution" : 8.58306884765625e-005, "scale" : 36071.483527679447}, 
                  {"level" : 14, "resolution" : 4.291534423828125e-005, "scale" : 18035.741763839724}, 
                  {"level" : 15, "resolution" : 2.1457672119140625e-005, "scale" : 9017.8708819198619}, 
                  {"level" : 16, "resolution" : 1.0728836059570313e-005, "scale" : 4508.9354409599309}, 
                  {"level" : 17, "resolution" : 5.3644180297851563e-006, "scale" : 2254.4677204799655} 
                ] 
              }); 
      
              this.loaded = true; 
              this.onLoad(this); 
            }, 
      
            getTileUrl: function(level, row, col) { 
              return "http://tile0.tianditu.com/DataServer?T=AB0512_Anno&"+ 
                                              "X=" + col + "&" + 
                      "Y=" + row + "&" + 
                      "L=" + (level*1+1); 
      
            } 
          }); 
  • 相关阅读:
    进程间通信 —— 命名管道
    判断当前线程是否有管理者权限
    获取操作系统OS等相关信息
    VS2017编译动态链接库报错
    git rebase 和 git merger
    Android开发之深入理解泛型extends和super的区别
    Android开发之深入理解Android Studio构建文件build.gradle配置
    Android开发之深入理解Android 7.0系统权限更改相关文档
    Android 开发之深入理解安卓调试桥各种错误解决办法
    自定义弹窗 VS AlertDialog分享弹窗
  • 原文地址:https://www.cnblogs.com/matoo/p/2724935.html
Copyright © 2011-2022 走看看