最近做项目需要用到ArcGis来进行数据展示和数据分析。以前从来没有接触过与Gis有关的东西,一切需要从头开始学。没有时间从头系统地学习了,只能用到哪个学习哪里了,本系列只是对学习的路径进行记录。ArcGis在网上没有找到中文的API,只有官网的英文API和Demo,而且用到了大量dojo的API,dojo也没有接触过,这方面也是需要学习的……

一、ArcGis加载

引入css 和js

[html] view plaincopy
  1. <link rel= "stylesheet" href ="https://js.arcgis.com/3.15/esri/css/esri.css">
  2. <script src= "https://js.arcgis.com/3.15/" ></script>

html

[html] view plaincopy
  1. <div id= "map" ></div>

初始化地图

[javascript] view plaincopy
  1. require(["esri/map", "dojo/domReady!" ], function(Map) {
  2. <span style="white-space:pre">    </span>var map = new Map("map" , {
  3. <span style="white-space:pre">        </span>center: [-118, 34.5],
  4. <span style="white-space:pre">        </span>zoom: 8,
  5. <span style="white-space:pre">        </span>basemap: "topo"
  6. <span style="white-space:pre">   </span>});
  7. });
以上代码为ArcGis首页上的demo,是最简单的地图了。地图上什么多余的功能都没有……
显示的效果是这样子的↓↓↓

二、加载天地图

能显示出地图了,很好,下一步是加载天地图了!上面那个地图全是英文的,我们给客户就不能用这样式的,而且还因为给特殊用户做的,所以只能暂时选定天地图了。哎,废话就不多说了。
在ArcGis的Sample Code中,有一个叫做Dynamic Layers的示例,动态图层。我理解的是地图中就一层一层的,底层是地图,上面可以覆盖上其他的标注,再往上可以是描的点,and so on……这个我在后面研究散点的时候有了更深刻的体会,散点下次再说。
扯远了,再扯回来,那个动态图层的Sample Code地址,加载两个动态图层:点我打开官方demo
[javascript] view plaincopy
  1. //加载天地图
  2. var baseMap = new WebTiledLayer("http://\${subDomain}.tianditu.com/DataServer?T=vec_c&X=\${col}&Y=\${row}&L=\${level}" , {
  3. <span style="white-space:pre">    </span>"copyright" : "Tianditu",
  4. <span style="white-space:pre">    </span>"id": "Tianditu" ,
  5. <span style="white-space:pre">    </span>"subDomains" : ["t0", "t1", "t2" ]
  6. });
  7. map.addLayer(baseMap);
我按照他们的代码,显示出来的是一片空白的屏幕。
这个原因是ArcGis与天地图采用的是两套投影体系,这样直接搬过来是没有什么用的。需要加上一些配置。↓↓↓
[javascript] view plaincopy
  1. <span style="white-space:pre">    </span>var tileInfo = new esri.layers.TileInfo({
  2. "rows" : 256,
  3. "cols" : 256,
  4. "compressionQuality" : 0,
  5. "origin" : {
  6. "x" : -180,
  7. "y" : 90
  8. },
  9. "spatialReference" : {
  10. "wkid" : 4326
  11. },
  12. "lods" : [
  13. {
  14. "level" : 2,
  15. "resolution" : 0.3515625,
  16. "scale" : 147748796.52937502
  17. },
  18. {
  19. "level" : 3,
  20. "resolution" : 0.17578125,
  21. "scale" : 73874398.264687508
  22. },
  23. {
  24. "level" : 4,
  25. "resolution" : 0.087890625,
  26. "scale" : 36937199.132343754
  27. },
  28. {
  29. "level" : 5,
  30. "resolution" : 0.0439453125,
  31. "scale" : 18468599.566171877
  32. },
  33. {
  34. "level" : 6,
  35. "resolution" : 0.02197265625,
  36. "scale" : 9234299.7830859385
  37. },
  38. {
  39. "level" : 7,
  40. "resolution" : 0.010986328125,
  41. "scale" : 4617149.8915429693
  42. },
  43. {
  44. "level" : 8,
  45. "resolution" : 0.0054931640625,
  46. "scale" : 2308574.9457714846
  47. },
  48. {
  49. "level" : 9,
  50. "resolution" : 0.00274658203125,
  51. "scale" : 1154287.4728857423
  52. },
  53. {
  54. "level" : 10,
  55. "resolution" : 0.001373291015625,
  56. "scale" : 577143.73644287116
  57. },
  58. {
  59. "level" : 11,
  60. "resolution" : 0.0006866455078125,
  61. "scale" : 288571.86822143558
  62. },
  63. {
  64. "level" : 12,
  65. "resolution" : 0.00034332275390625,
  66. "scale" : 144285.93411071779
  67. },
  68. {
  69. "level" : 13,
  70. "resolution" : 0.000171661376953125,
  71. "scale" : 72142.967055358895
  72. },
  73. {
  74. "level" : 14,
  75. "resolution" : 8.58306884765625e-005,
  76. "scale" : 36071.483527679447
  77. },
  78. {
  79. "level" : 15,
  80. "resolution" : 4.291534423828125e-005,
  81. "scale" : 18035.741763839724
  82. },
  83. {
  84. "level" : 16,
  85. "resolution" : 2.1457672119140625e-005,
  86. "scale" : 9017.8708819198619
  87. },
  88. {
  89. "level" : 17,
  90. "resolution" : 1.0728836059570313e-005,
  91. "scale" : 4508.9354409599309
  92. },
  93. {
  94. "level" : 18,
  95. "resolution" : 5.3644180297851563e-006,
  96. "scale" : 2254.4677204799655
  97. }
  98. ]
  99. });
又长又难看,强迫症表示忍不了,每一个页面都有写之么长一段,好烦,我给拿到一个单独的js里了。
这样, 天地图的图层需要加上这么一句,见下面代码加粗部分:
[javascript] view plaincopy
  1. <span style="white-space:pre">    </span>var baseMap = new WebTiledLayer("http://\${subDomain}.tianditu.com/DataServer?T=vec_c&X=\${col}&Y=\${row}&L=\${level}" , {
  2. "copyright" : "Tianditu",
  3. "id": "Tianditu" ,
  4. "subDomains" : ["t0", "t1", "t2" ],
  5. <strong>"tileInfo" :tileInfo</strong>
  6. });

这样显示出来是下面的样子,好一片蔚蓝的大海。

我们把地图缩小一下再看:

地图上是没有标注的,这个就需要再加载一个再标注的图层才可以的。
[javascript] view plaincopy
  1. //底图标注
  2. var baseMapMarker = new WebTiledLayer("http://\${subDomain}.tianditu.com/DataServer?T=cva_c&X=\${col}&Y=\${row}&L=\${level}" , {
  3. "copyright" : "Tianditu",
  4. "id": "Tianditu2" ,
  5. "subDomains" : ["t0", "t1", "t2" ],
  6. "tileInfo" :tileInfo
  7. });
  8. map.addLayer(baseMapMarker);

显示效果变成这个样子:

这样基本就完工喽,最后设置一下初始的中心位置和缩放比例吧,我们就以我们的首都为例吧:
[javascript] view plaincopy
  1. <span style="white-space:pre">    </span>map.centerAndZoom(new esri.geometry.Point({
  2. "x": 116.40969,
  3. "y": 39.89945,
  4. "spatialReference": {
  5. "wkid": 4326
  6. }
  7. }),12);

最终效果,至于显示div的样式,铺满全屏什么的,这就是CSS的问题了,不多说了,上一张完工图:

我写的demo,html版的,可以稍微借鉴一下吧 ^_^ 点我下载

学习是一个很复杂的过程,把这个学习研究的过程讲出来,也挺累的……好了,本宝宝该接着上班了。
下集预告:安装部署引入本地ArcGis

转载于:https://www.cnblogs.com/telwanggs/p/5650684.html

【ArcGis for javascript从零开始】之一 ArcGis加载天地图相关推荐

  1. arcgis android 天地图,Arcgis runtime for Android 100.5 加载天地图

    说明一下,什么时候加载高德地图,什么时候加载天地图 使用原生定位或者使用arcgis提供的LocationDisplay的定位时,需要加载天地图,因为原生定位返回的坐标是wgs84的坐标,而高德地图是 ...

  2. arcgis for Android 100.1 在线加载天地图和谷歌地图

    距离上一篇arcgis for Android 已经很久.其实年初的时候就测试了arcgis for Android 100.1版本.搜集网上各篇文章,最后自已测试代码.修改代码.这一篇来讲一下加载在 ...

  3. arcgis for android(五)加载天地图

    1.上一篇文章arcgis for android 入门与提高(四)去掉属性标记和水印arcgis for android 入门与提高(四)去掉属性标记和水印_郝大大的博客-CSDN博客,接下来介绍国 ...

  4. 使用ArcGIS JavaScript API 3.18 加载天地图

    对于中国开发者在创建GIS应用的时候,往往比较头疼的是底图资源的缺乏.其实国家测绘地信局就提供一个很好的免费资源:天地图.使用ArcGIS API的开发人员可以直接利用该资源作为地图应用的底图. Ar ...

  5. 基于ArcGIS API for JavaScript加载天地图

    文章目录 前言 效果图 详细代码 总结 参考链接 前言 该篇主要介绍如何用ArcGIS JS API加载天地图,具体应用场景以及需求分析等,在上篇基于ArcGIS API for JavaScript ...

  6. 填坑 ---- arcgis api for javascript 加载天地图

    写在前面 首先要感谢 arcgis api for javascript 加载天地图 这篇文章,帮助我完成了在网页中加载天地图. 在此就不再描述加载天地图的方法与过程,只记录我遇到的一个坑与填坑方法. ...

  7. arcgis api for javascipt 加载天地图、百度地图

    写在前面的话: 1.百度地图是自己定义的坐标系统,wkid=102100.百度地图数据是加密的产物.下文将附上百度坐标与WGS84,谷歌等坐标系统转换方法(地理-地理),此方法并未亲测,据说准 2.百 ...

  8. (转)Arcgis for js加载天地图

    http://blog.csdn.net/gisshixisheng/article/details/44494715 综述:本节讲述的是用Arcgis for js加载天地图的切片资源. 天地图的切 ...

  9. ArcGIS 切片/瓦片的发布与加载

    ArcGIS 切片/瓦片的发布与加载 一.影像预处理 二.瓦片的发布 三.瓦片的加载 1.一些需要注意的点 2.代码实现 3.最终效果 本文介绍了遥感影像在Arcmap上的发布与切片,并在网页通过Ar ...

最新文章

  1. 查看hdfs目录的方法
  2. 3pc_three phase commit protocol协议理解
  3. python后缀名切割_python批量将.xls转化为.xlsx,包括文件名和后缀分割
  4. 帆软报表和jeecg的进一步整合--ajax给后台传递map类型的参数
  5. SQL批量提交修改业务
  6. 安卓修改wifi已停用_手机连不上wifi显示已保存怎么回事【原因介绍】
  7. 扫地机器人划伤地板_扫地机器人哪个牌子好?会选的才能买到好产品
  8. hbuilder设置html浏览器打开,HBuilder X如何配置浏览器操作配置方法
  9. mysql 命令创建一个用户名和密码_Mysql的进入数据库指令和创建新用户密码的介绍...
  10. 经典的经典:《自然哲学的数学原理》
  11. HBase 过滤器使用
  12. java制作报表统计_统计报表制作,怎样做报表统计
  13. 64位win7下Android SDK Manager闪退的解决方法
  14. MAC OS苹果系统密码破解方法
  15. Windows VScode Linter pylint is not installed
  16. Jenkins配置流水线
  17. angular 学习资源
  18. 使用MathType编辑公式时,删除键backspace和delete不好用,解决办法
  19. 百度API之路线规划
  20. GD32F303CCT6与GD32F407VKTC spi 主从通信

热门文章

  1. mysql replace update_mysql的replace,存在更新,不存在插入
  2. 基于ZYNQ FPGA实现数据采集与传输系统设计
  3. (6)ISE14.7生成bit文件报错解决(FPGA不积跬步101)
  4. (126)FPGA面试题-做了哪些FPGA时序约束?
  5. (32)FPGA米勒型状态机设计(三段式)(第7天)
  6. (42)FPGA面试题时钟抖动和时钟偏移
  7. 5.FreeRTOS学习笔记- 互斥量
  8. 14008.xilinx-EMIO 扩展I2C问题
  9. 21 Qt中ui设计中的一些小知识点
  10. Linux内核的Nand驱动流程分析