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

一、ArcGis加载

引入css 和js

  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

  1. <div id= "map" ></div>

初始化地图

  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
  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与天地图采用的是两套投影体系,这样直接搬过来是没有什么用的。需要加上一些配置。↓↓↓
  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里了。
这样, 天地图的图层需要加上这么一句,见下面代码加粗部分:
  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. });

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

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

地图上是没有标注的,这个就需要再加载一个再标注的图层才可以的。
  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);

显示效果变成这个样子:

 
这样基本就完工喽,最后设置一下初始的中心位置和缩放比例吧,我们就以我们的首都为例吧:
  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

【ArcGis for javascript从零开始】之一 ArcGis加载天地图的更多相关文章

  1. ArcGis Javascript API (V3.6)加载天地图

    Arcgis的Javascript api开发很活跃,不知不觉都发布了3.6的版本了.该版本基于dojo 1.8.3开发的. 从dojo 1.8开始,AMD机制用得越来越多了,而且require([& ...

  2. 18 ArcGIS API for JavaScript4.X 系列加载天地图(经纬度)

    <!DOCTYPE html> <html lang="en"> <head> <meta charset="UTF-8&quo ...

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

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

  4. ArcGIS API for Javascript 加载天地图(经纬度投影)

    <!DOCTYPE html> <html> <head> <meta charset="utf-8"> <title> ...

  5. ArcGIS API for Javascript 加载天地图(墨卡托投影)

    <!DOCTYPE html> <html> <head> <meta charset="utf-8"> <title> ...

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

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

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

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

  8. (转载)arcgis for js - 解决加载天地图和WMTS服务,WMTS服务不显示的问题,以及wmts服务密钥。

    1 arcgis加载天地图和wmts服务 arcgis for js加载天地图的例子网上有很多,这里先不写了,后期有空再贴代码,这里主要分析下WMTS服务为什么不显示,怎么解决. 条件:这里的WMTS ...

  9. arcgis api 4.x for js 结合 react 入门开发系列react全家桶实现加载天地图(附源码下载)

    基于两篇react+arcgis的文章介绍,相信大家也能体会两者的开发区别了.在“初探篇”中作者也讲述了自己的选择,故废话不多说,本篇带大家体验在@arcgis/webpack-plugin环境下,使 ...

随机推荐

  1. Java性能优化权威指南-读书笔记(二)-JVM性能调优-概述

    概述:JVM性能调优没有一个非常固定的设置,比如堆大小设置多少,老年代设置多少.而是要根据实际的应用程序的系统需求,实际的活跃内存等确定.正文: JVM调优工作流程 整个调优过程是不断重复的一个迭代, ...

  2. win8系统使用Administrator用户 命令行

    windows键+X,再按A键进入管理员模式的命令提示符 输入命令:net user administrator /active:yes 然后注销,即可使用管理员账户登录

  3. Ruby备忘

  4. Period(poj 1961)

    题目大意: 给你一个字符串,求这个字符串到第i个字符为止的循环节的次数. 比如aabaabaabaab,长度为12.到第二个a时,a出现2次,输出2.到第二个b时,aab出现了2次,输出2.到第三个b ...

  5. 如何关闭ie9烦人的提示信息?

    ①Q:如何关闭“IE 限制活动内容”的提示? A:去掉“IE 限制活动内容”的提示: 1. 找到IE的“Internet选项”: 2. 选择“高级”选项卡: 3. 在“设置”下,找到子标题“安全”,将 ...

  6. C#开发微信公众平台-就这么简单(附Demo)(转载)

    转载地址:http://www.cnblogs.com/xishuai/p/3625859.html 写在前面 服务号和订阅号 URL配置 创建菜单 查询.删除菜单 接受消息 发送消息(图文.菜单事件 ...

  7. Hibernate 分页时 Long 无法转化成Integer类型 异常

    转自:http://loquat.iteye.com/blog/818547 报错:java.lang.Long cannot be cast to java.lang.Integer   Long ...

  8. ==与equals()的区别

    /** * Object类的equals()的声明规则: * public Boolean equals(Object obj) * * Object类的equals()方法比较规则: * 当参数ob ...

  9. Android项目环境搭建

    安装步骤: ①     安装JDK1.6 在Windows上配置Java环境变量 # JAVA_HOME(C:\Program Files\Java\jdk1.6.0_06),Path(C:\Prog ...

  10. 如何重启Cloudera Manager?

    为什么重启: 突然发现ClouderaManager的webui访问不了了…… 我使用netstat看了一下我的webui监听端口,发现尼玛N多CLOSE_WAIT,网上查了一下是Socket关闭有问 ...