【回顾】前4篇交代了JsAPI的背景、资源如何获取,简介了数据与视图分离的概念与实现,剖析了页面的大骨架。html
这篇开始,讲Map类。前端
转载注明出处,博客园/CSDN/B站/知乎:秋意正寒服务器
Map类继承自Accessor,有子类WebMap , WebScene。spa
这玩意儿是什么?通俗说,Map就是一张地图,它属于数据部分,须要用视图展现它。翻译
视图,在jsAPI中,就是View,它负责把Map描绘出来,用WebGL的手段。3d
那么,Map类如何组织数据呢?用图层。对,图层,Layer!(至于Layer那是后话了,咱们先谈Map数据的组织)rest
因此,你看到的不少Map类的方法,都是控制图层的。code
属性 | 方法 |
|
|
方法都很简单,自行查阅官方API就知道怎么写了,我重点讲一下属性,尤为是ground属性、basemap属性。server
有人说为何不讲layers和allLayers?图层当然是Map的组成,可是这里是说Map,数据的承载体——Layer,还要等到下篇再说。
这个词直译是基础地图,我通俗地翻译为底图。就是最底下的图,像桌布同样。
本质上,basemap仍是图层。
basemap是Basemap类型的,Basemap类型的对象是如何建立的呢?
固然仍是由服务器上的各类数据服务建立的,查阅Basemap的构造器,其实basemap就是一堆堆的“layer”组成的。
若是须要自定义底图,能够深刻研究研究Basemap类如何实例化。
若是对自定义底图没什么功夫,其实能够直接用官方给的预置图层,只需将basemap属性赋予几个预置的字符串便可。
例如:
var map = new Map( { basemap: "streets", ground: "world-elevation" } );
basemap就指定为街道图了(打开好像是OpenStreetMap)
官方预置了十几种底图,有兴趣能够去看看。
这单词直译是地面,形象翻译为高程。与底图同样,容许你使用字符串的方式,使用官方给的预置世界高程信息。
若是有更精确的或者符合本身坐标系须要的高程信息,这可能就须要经过实例化Ground对象来赋值了。
实际上,Ground类,也是由图层构成的。
它是由服务器上的高程影像服务组成的,前端这边叫高程图层——ElevationLayer类。
例如:
var worldElevation = ElevationLayer({ url: "//elevation3d.arcgis.com/arcgis/rest/services/WorldElevation3D/Terrain3D/ImageServer" }); var customElevation = ElevationLayer({ url: "http://my.server.com/arcgis/rest/service/MyElevationService/ImageServer" }); var map = new Map({ basemap: "topo", ground: new Ground({ layers: [ worldElevation, customElevation ] }) });
实际上,Map就是个图层容器,只不过官方对各类图层的功能进行了分类。
底图作底,高程做高度信息,还有其余的图层,展现各类地理信息,构成了三层式体系。
下一节,我就简单说说“其余的图层”,有哪些,怎么建立,这可能要说起服务端了。
plus:要断更比较长的时间,暂时把这个写上,见谅。