本例使用一个WMS端点创建了一个简单的动态图层。首先,代码声明一个新的类my.CityStatesRiversUSAWMSLayer,该类继承esri.layers.DynamicMapServiceLayer

  1. dojo.declare("my.CityStatesRiversUSAWMSLayer", DynamicMapServiceLayer, {
  1.   ...
  1. });

接下来定义了类的构造函数。图层的初始化和完整的范围和空间参考都被定义在构造函数中。代码也设置了图层的loaded属性为true并调用onLoad函数。

  1. constructor: function() {
  1.   this.initialExtent = this.fullExtent = new esri.geometry.Extent(...);
  1.   this.spatialReference = new esri.SpatialReference(...);
  1.  
  1.   this.loaded = true;
  1.   this.onLoad(this);
  1. },

最后,getImageUrl方法被执行。getImageUrl方法返回被加到地图的图片的URL。URL使用带范围,宽和高的参数的函数生成。callback函数被调用别且URL作为单一参数被传回。

  1. getImageUrl: function(extent, width, height, callback) {
  1.   ...
  1.  
  1.   callback("..." + dojo.objectToQuery(params));
  1. }

为了使用这个图层,代码创建一个地图并且增加一个来自ArcGIS Online的切片图层,然后在上面放置新建的WMS图层。

  1. function init() {
  1.   var map = new esri.Map("map");
  1.   map.addLayer(new esri.layers.ArcGISTiledMapServiceLayer("..."));
  1.   map.addLayer(new my.CityStatesRiversUSAWMSLayer());
  1. }
  2.  
  1. <!DOCTYPE html PUBLIC "-//W3C//DTD HTML 4.01//EN"
  2. "http://www.w3.org/TR/html4/strict.dtd">
  3.  
  4. <html lang="en">
  5. <head>
  6. <meta http-equiv="Content-Type" content="text/html; charset=utf-8">
  7. <meta http-equiv="X-UA-Compatible" content="IE=7" />
  8. <title>Portland Tile Server</title>
  9.  
  10. <link rel="stylesheet" type="text/css" href="http://serverapi.arcgisonline.com/jsapi/arcgis/1.5/js/dojo/dijit/themes/tundra/tundra.css">
  11. <script type="text/javascript" src="http://serverapi.arcgisonline.com/jsapi/arcgis/?v=1.5"></script>
  12. <script type="text/javascript">
  13.  
  14. dojo.require("esri.map");
  15.  
  16. dojo.declare("my.PortlandTiledMapServiceLayer",esri.layers.TiledMapServiceLayer,{
  17. constructor:function(){
  18.  
  19. this.spatialReference = new esri.SpatialReference({wkid:4326});
  20. this.initialExtent = (this.fullExtent = new esri.geometry.Extent(-123.596895130725, 44.297575737946, -121.553757125519, 46.3683237161949, this.spatialReference));
  21.  
  22. this.tileInfo = new esri.layers.TileInfo({
  23. "rows" :512,
  24. "cols" :512,
  25. "dpi" :96,
  26. "format":"PNG32",
  27. "compressionQuality":0,
  28. "origin": {
  29. "x" : -180,
  30. "y" :90
  31. },
  32. "spatialReference" : {
  33. "wkid" : 4326
  34. },
  35. "lods" :[
  36.  
  37. {"level" : 0, "resolution" : 0.351562499999999, "scale" : 147748799.285417},
  38. {"level" : 1, "resolution" : 0.17578125, "scale" : 73874399.6427087},
  39. {"level" : 2, "resolution" : 0.0878906250000001, "scale" : 36937199.8213544},
  40. {"level" : 3, "resolution" : 0.0439453125, "scale" : 18468599.9106772},
  41. {"level" : 4, "resolution" : 0.02197265625, "scale" : 9234299.95533859},
  42. {"level" : 5, "resolution" : 0.010986328125, "scale" : 4617149.97766929},
  43. {"level" : 6, "resolution" : 0.0054931640625, "scale" : 2308574.98883465},
  44. {"level" : 7, "resolution" : 0.00274658203124999, "scale" : 1154287.49441732},
  45. {"level" : 8, "resolution" : 0.001373291015625, "scale" : 577143.747208662},
  46. {"level" : 9, "resolution" : 0.0006866455078125, "scale" : 288571.873604331},
  47. {"level" : 10, "resolution" : 0.000343322753906249, "scale" : 144285.936802165},
  48. {"level" : 11, "resolution" : 0.000171661376953125, "scale" : 72142.9684010827},
  49. {"level" : 12, "resolution" : 8.58306884765626E-05, "scale" : 36071.4842005414},
  50. {"level" : 13, "resolution" : 4.29153442382813E-05, "scale" : 18035.7421002707},
  51. {"level" : 14, "resolution" : 2.14576721191406E-05, "scale" : 9017.87105013534},
  52. {"level" : 15, "resolution" : 1.07288360595703E-05, "scale" : 4508.93552506767}
  53.  
  54. ]
  55. });
  56.  
  57. this.loaded = true;
  58. this.onLoad(this);
  59.  
  60. },
  61.  
  62. getTileUrl: function(level, row, col) {
  63. return "http://sampleserver1.arcgisonline.com/arcgiscache/Portland_Portland_ESRI_LandBase_AGO/Portland/_alllayers/" +
  64. "L" + dojo.string.pad(level, 2, '0') + "/" +
  65. "R" + dojo.string.pad(row.toString(16), 8, '0') + "/" +
  66. "C" + dojo.string.pad(col.toString(16), 8, '0') + "." +
  67. "png";
  68. }
  69. });
  70. function init() {
  71. var map = new esri.Map("map");
  72.  
  73. map.addLayer(new my.PortlandTiledMapServiceLayer());
  74. }
  75. dojo.addOnLoad(init);
  76.  
  77. </script>
  78. </head>
  79. <body class="tundra">
  80. <div id="map" style=" width:1024px; height:512px; border:1px solid #000;"></div>
  81. </body>
  82. </html>

ArcGIS api for javascript——图层-创建WMS图层类型的图层的更多相关文章

  1. ArcGIS api for javascript——动态创建图层列表

    描述 本例循环地图服务里的所有图层并增加每个图层到一个带checkbox的列表,checkbox能设置图层的显示或隐藏.动态创建列表的优势是所有的图层都会包含在列表中,即使服务器管理员删除或增加了图层 ...

  2. ArcGIS API for JavaScript(2)-ArcGIS Server发布要素图层服务

    1.前言 上一篇该系列的文章我们主要讲了一下基础Web地图搭建,这篇我们主要讲一下ArcGIS Server发布服务,并且如何调用服务.将自己的数据加载到Web地图当中来,实现Web端浏览数据. 2. ...

  3. 转:ArcGIS API For JavaScript官方文档(二十)之图形和要素图层——①Graphics概述

    原文地址:ArcGIS API For JavaScript官方文档(二十)之图形和要素图层——①Graphics概述 ArcGIS JavaScript API允许在地图上绘制graphic(图形) ...

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

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

  5. 创建ArcGIS API for JavaScript的第一个示例程序

    原文:创建ArcGIS API for JavaScript的第一个示例程序 在上一篇博客中已经介绍了如何搭建ArcGIS API for JavaScript开发环境,如果您还没有搭建好开发环境的话 ...

  6. ArcGIS API for Silverlight 调用GP服务加载等值线图层

    原文:ArcGIS API for Silverlight 调用GP服务加载等值线图层 第二篇.Silverlight客户端调用GP服务 利用ArcGIS API for Silverlight实现G ...

  7. arcgis api 3.x for js 入门开发系列七图层控制(附源码下载)

    前言 关于本篇功能实现用到的 api 涉及类看不懂的,请参照 esri 官网的 arcgis api 3.x for js:esri 官网 api,里面详细的介绍 arcgis api 3.x 各个类 ...

  8. ArcGIS API for JavaScript介绍

    ArcGIS API for JavaScript中的类是按照模块组织的,主要包含esri.esri/geometry.esri/renderers.esri/symbols.esri/symbols ...

  9. ArcGIS API for JavaScript 4.2学习笔记[5] 官方API大章节概述与内容转译

    内容如上,截图自ESRI官网,连接:ArcGIS API for JavaScript 4.2 [Get Started] 类似于绪论一样的东西,抽取了最需要关注的几个例子.如:加载Map和View, ...

  10. ArcGIS API for JavaScript FeatureLayer服务属性编辑

    首先说一下感想吧,刚入行时感觉深似海,掉到了GIS开发的陨石大坑里了,首先是学了小半年的Flex,用到了ArcGIS API for Flex,接着又是半年的ArcEngine开发,现在终于摸到了一点 ...

随机推荐

  1. First-class citizen

    In programming language design, a first-class citizen (also type, object, entity, or value) in a giv ...

  2. ZBrush功能特性之法线贴图

    ZMapper是ZBrush2.0推出的免费法线贴图插件.使用ZBrush革命性的多级别精度和新型的照明-快速光线跟踪器,ZMapper可以在几秒内产生适用于任何游戏引擎的法线贴图,不过3.5版本以后 ...

  3. Dapper Dapper-Extensions

    之前公司在开发项目的时候有用到过Dapper 仓储 以及IOC Castel .最近新项目上想使用上这些技术,决定新学习一下. 看了很多资料,发现几个比较容易菜鸟的我理解的,整理下来,找时间好好整理一 ...

  4. FCC编程题之中级算法篇(中)

    介绍 接着上次的中级算法题 目录 1. Missing letters 2. Boo who 3. Sorted Union 4. Convert HTML Entities 5. Spinal Ta ...

  5. pyftpdlib 搭建ftp环境

    环境搭建: pythonwindows/linuxpip install pyftpdlib (安装失败请到这里下载:https://pypi.python.org/pypi/pyftpdlib/)一 ...

  6. Go语言的前景分析

    本文为原创文章,转载注明出处,asdfasdfasdf 欢迎扫码关注公众号flysnow_org或者网站http://www.flysnow.org/,第一时间看后续精彩文章.觉得好的话,顺手分享到朋 ...

  7. 紫书 例题11-11 UVa 12661 (dihkstra变形)

    这道题主要比较权值的时候要改变一下,其他地方基本一样. 比较权值的时候要考虑边的时间与a, b 可以设相对于当前边的时间now, 则now = d[u] % (a+b), 也就是当前这个边进行到整个a ...

  8. Qt之OpenSSL

    简述 OpenSSL是一个强大的安全套接字层密码库,囊括主要的密码算法.常用的密钥和证书封装管理功能及SSL协议,并提供丰富的应用程序供测试或其它目的使用. 简述 下载安装 使用 更多参考 下载安装 ...

  9. EularProject 42:单词解码出来的三角形数

    Coded triangle numbers Problem 42 The nth term of the sequence of triangle numbers is given by, tn = ...

  10. asm下重定向数据文件小例(使用toad工具)

    原创作品,出自 "深蓝的blog" 博客,深蓝的blog:http://blog.csdn.net/huangyanlong/article/details/46863991 场景 ...