使用GeoWebCache的主要目的是其独立安装版能够发布arcgis的切片。我们知道,使用openlayer是调用geoserver最方便的方法,那么在发布完arcgis的切片后,怎么用arcgis API来调用呢?

1、重写TiledMapServiceLayer的方式。

不断寻找,终于找到了一个arcgis官网的加载geoserver的wmts的例子,而geoserver和GeoWebCache是支持wmts的。所以这个方法是可行的。我将这个例子改了一下,最后调用成功。

例子如下:

  1. function creatGeoWebCacheObject() {
  2.  
  3. //地图
  4.  
  5. dojo.declare("GeoWebCacheLayer", esri.layers.TiledMapServiceLayer, {
  6.  
  7. constructor: function () {
  8.  
  9. this.spatialReference = new esri.SpatialReference({ wkid: 4326 });
  10.  
  11. this.initialExtent = this.fullExtent =
  12.  
  13. new esri.geometry.Extent(116, 40, 118, 41, this.spatialReference);
  14.  
  15. this.tileInfo = new esri.layers.TileInfo({
  16.  
  17. "rows": 256,
  18.  
  19. "cols": 256,
  20.  
  21. "compressionQuality": 0,
  22.  
  23. "origin": { "x": -180, "y": 90 },
  24.  
  25. "spatialReference": { "wkid": 4326 },
  26.  
  27. "lods": [{ "level": 0, "resolution": 0.703125, "scale": 295497593.05875 },
  28.  
  29. { "level": 1, "resolution": 0.3515625, "scale": 147748796.529375 },
  30.  
  31. { "level": 2, "resolution": 0.17578125, "scale": 73874398.264688 },
  32.  
  33. { "level": 3, "resolution": 0.087890625, "scale": 36937199.132344 },
  34.  
  35. { "level": 4, "resolution": 0.0439453125, "scale": 18468599.566172 },
  36.  
  37. { "level": 5, "resolution": 0.02197265625, "scale": 9234299.783086 },
  38.  
  39. { "level": 6, "resolution": 0.010986328125, "scale": 4617149.891543 },
  40.  
  41. { "level": 7, "resolution": 0.0054931640625, "scale": 2308574.945771 },
  42.  
  43. { "level": 8, "resolution": 0.00274658203125, "scale": 1154287.472886 },
  44.  
  45. { "level": 9, "resolution": 0.001373291015625, "scale": 577143.736443 },
  46.  
  47. { "level": 10, "resolution": 0.0006866455078125, "scale": 288571.86822143558 },
  48.  
  49. { "level": 11, "resolution": 0.00034332275390625, "scale": 144285.93411071779 },
  50.  
  51. { "level": 12, "resolution": 0.000171661376953125, "scale": 72142.967055358895 },
  52.  
  53. { "level": 13, "resolution": 8.58306884765625e-005, "scale": 36071.483527679447 },
  54.  
  55. { "level": 14, "resolution": 4.291534423828125e-005, "scale": 18035.741763839724 },
  56.  
  57. { "level": 15, "resolution": 2.1457672119140625e-005, "scale": 9017.8708819198619 },
  58.  
  59. { "level": 16, "resolution": 1.0728836059570313e-005, "scale": 4508.9354409599309 },
  60.  
  61. { "level": 17, "resolution": 5.3644180297851563e-006, "scale": 2254.4677204799655 }]
  62.  
  63. });
  64.  
  65. this.loaded = true;
  66.  
  67. this.onLoad(this);
  68.  
  69. },
  70.  
  71. getTileUrl: function (level, row, col) {
  72.  
  73. var levelMap = "";
  74.  
  75. levelMap = "http://localhost:8090/geoserver/gwc/service/wmts" + "?SERVICE=WMTS&VERSION=1.0.0&REQUEST=GetTile"
  76.  
  77. + "&LAYER=Maps:beijing" + "&STYLE=_null" + "&FORMAT=image/png" + "&TILEMATRIXSET=EPSG:4326"
  78.  
  79. + "&TILEMATRIX=EPSG:4326:" + level + "&TILEROW=" + row + "&TILECOL=" + col;
  80.  
  81. return levelMap;
  82.  
  83. }
  84.  
  85. });
  86.  
  87. }

2、主要修改地方

这个函数中主要修改几个地方,这些大部分都可以从wmts文件中获取,在点击getcapabilities document后会获取一个wmts文件,打开该文件,可以在对应的layer中获取对应的参数。

 

fullExtent:就是图层发布的extent,后面跟坐标系。

 

Origin:原点,世界地图用-180,90。一般在geoserver中发布的地图也是这个。但是如果是发布的Arcgis切片,可以在Arcgis server中发布的服务中看到,打开服务地址,json中的地图可以直接来用。另外在切片文件的conf.xml文件中也有相关配置。

Lods:这个是地图level和比例尺、像素之间的关系,与原点之间的配合可以使getTileUrl时获取正确的级别、行列号对应关系。Arcgis可以直接从json中获取,geoserver和GeoWebCache发布的服务可以根据坐标系直接用对应的lods。

EPSG:坐标系统编码。值得注意的是:在发布的Arcgis切片中,你的EPSG后面并不是4326这样正规的编码,一般是4326_beijing这样的编码。具体可参考发布的gwc中的显示。

 

其他配置在wmts或者Arcgis服务配置文件中都可以找到或者获取提示。

这另外我的GeoWebCache一开始没有装好,wmts不支持,后来卸掉tomcat重装了一下,配置好java环境,终于搞定。

主要参考文章:

https://developers.arcgis.com/javascript/jssamples/layers_wmts.html

Arcgis js API使用wmts方式加载GeoWebCache中的切片地图(转载)的更多相关文章

  1. arcgis api for JavaScript _加载三维图层(scene layer)

    arcgis api for JavaScript _加载三维图层(scene layer) arcgis api for JavaScript  4.x 版本增加对三维的支持. 关于三维图层(sce ...

  2. js异步执行 按需加载 三种方式

    js异步执行 按需加载 三种方式 第一种:函数引用 将所需加载方法放在匿名函数中传入 //第一种 函数引用 function loadScript(url,callback){ //创建一个js va ...

  3. javascript Date 日期格式化 formatDate, require.js 模块 支持全局js引入 / amd方式加载

    * 引入AMD加载方式: require.js CDN https://cdn.bootcss.com/require.js/2.3.5/require.js *  创建模块文件./js/util/d ...

  4. 《ArcGIS Runtime SDK for Android开发笔记》——(13)、图层扩展方式加载Google地图

    1.前言 http://mt2.google.cn/vt/lyrs=m@225000000&hl=zh-CN&gl=cn&x=420&y=193&z=9& ...

  5. geoserver图层属性查询及查询结果转换为arcgis js api能使用的格式

    一个项目使用了ArcGIS JS API开发GIS展示层,但GIS服务使用了Geoserver,这时加载Geoserver数据和查询数据就和之前完全不一样了,以下介绍下我使用ArcGIS JS API ...

  6. ArcGIS JS API使用PrintTask打印地图问题解决汇总

    环境:来源于工作过程,使用的API是  arcgis js 3.*  3系API,4.*暂时没测试: 1.数据与打印服务跨域情况下,不能打印问题. 一般情况下,我们发布的数据服务和打印服务是在一台服务 ...

  7. MVC Ajax Helper或jQuery异步方式加载部分视图

    Model: namespace MvcApplication1.Models { public class Team { public string Preletter { get; set; } ...

  8. 基于ArcGIS JS API的在线专题地图实现

    0 引言     专题地图是突出而深入的表示一种或几种要素或现象,即按照地图主题的要求,集中表示与主题有关内容的地图.专题地图的专题要素多种多样,分类方法也多种多样,根据专题地图表现数据的特点可分为定 ...

  9. 能否使用require('.json')的方式加载大量JSON文件?

    Node.js中推崇非阻塞I/O,但是require一个模块时却是同步调用的,这会带来性能上的开销,但并不是每次require都很耗时,因为在require成功之后会缓存起来,在此加载时直接从缓存读取 ...

随机推荐

  1. 剑指offer 重建二叉树

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

  2. activity管理类 appManager

    程序启动第一个界面类: net.oschina.app.AppStart功能描述:一张图片代码细节描述:一个透明度的动画效果,效果动画完成后自动启动新的Activity(Main) 基本BaseAct ...

  3. 2016青岛网络赛 The Best Path

    The Best Path Time Limit: 9000/3000 MS (Java/Others)    Memory Limit: 65535/32768 K (Java/Others) Pr ...

  4. android 1.6 launcher研究之自定义ViewGroup (转 2011.06.03(二)——— android 1.6 launcher研究之自定义ViewGroup )

    2011.06.03(2)——— android 1.6 launcher研究之自定义ViewGroup2011.06.03(2)——— android 1.6 launcher研究之自定义ViewG ...

  5. 配置cinder使用NFS后端

    首先先使用“cinder delete”命令删除所有实例,释放磁盘空间. 停止cinder服务:service openstack-cinder-api stopservice openstack-c ...

  6. PAT (Advanced Level) 1073. Scientific Notation (20)

    简单模拟题. #include<cstdio> #include<cstring> #include<cmath> #include<vector> # ...

  7. Js中数据类型判断的几种方法

    判断js中的数据类型有一下几种方法:typeof.instanceof. constructor. prototype. $.type()/jquery.type(),接下来主要比较一下这几种方法的异 ...

  8. gulp用法

    转载:http://segmentfault.com/blog/laopopo/1190000000372547 http://javascript.ruanyifeng.com/tool/gulp. ...

  9. [Unity Shader]Shader分类

    Shader的分类: Shader按管线分类一般分为固定渲染管线与可编程渲染管线 (1)固定渲染管线 ——这是标准的几何&光照(Transforming&Lighting)管线,功能是 ...

  10. 贪心法基础题目 HDU

    贪心算法的基本步骤: 1.从问题的某个初始解出发.2.采用循环语句,当可以向求解目标前进一步时,就根据局部最优策略,得到一个部分解,缩小问题的范围或规模.3.将所有部分解综合起来,得到问题的最终解. ...