ArcGIS API for JavaScript 入門教程[5] 再講數據——Map類之底圖與高程

【回顧】前4篇交代了JsAPI的背景、資源如何獲取,簡介了數據與視圖分離的概念與實現,剖析了頁面的大骨架。html

這篇開始,講Map類。前端

轉載註明出處,博客園/CSDN/B站/知乎:秋意正寒服務器

目錄:http://www.javashuo.com/article/p-tloynsnb-ks.htmlurl

1. Map類的屬性與方法

Map類繼承自Accessor,有子類WebMap , WebScene。spa

這玩意兒是什麼?通俗說,Map就是一張地圖,它屬於數據部分,須要用視圖展現它。翻譯

視圖,在jsAPI中,就是View,它負責把Map描繪出來,用WebGL的手段。3d

那麼,Map類如何組織數據呢?用圖層。對,圖層,Layer!(至於Layer那是後話了,咱們先談Map數據的組織)rest

因此,你看到的不少Map類的方法,都是控制圖層的。code

屬性 方法
  • ground:高程,Ground類型
  • basemap:底圖,Basemap類型
  • allLayers:所有平面圖層,Collection類型
  • layers:所有可操做圖層,Coolection類型
  • add():添加一個圖層,可指定圖層位置
  • addMany():添加多個圖層,可指定位置
  • findLayerById():根據ID尋找圖層
  • remove():移除指定圖層
  • removeAll():移除所有圖層
  • removeMany():移除多個圖層
  • reorder():對某個圖層進行重排序(id變換)

 

 

 

 

 

 

 

方法都很簡單,自行查閱官方API就知道怎麼寫了,我重點講一下屬性,尤爲是ground屬性、basemap屬性。server

有人說爲何不講layers和allLayers?圖層當然是Map的組成,可是這裏是說Map,數據的承載體——Layer,還要等到下篇再說。

2. 屬性:basemap詳解

這個詞直譯是基礎地圖,我通俗地翻譯爲底圖。就是最底下的圖,像桌布同樣。

2.1 Basemap類

本質上,basemap仍是圖層。

basemap是Basemap類型的,Basemap類型的對象是如何建立的呢?

固然仍是由服務器上的各類數據服務建立的,查閱Basemap的構造器,其實basemap就是一堆堆的「layer」組成的。

若是須要自定義底圖,能夠深刻研究研究Basemap類如何實例化。

2.2 預置basemap

若是對自定義底圖沒什麼功夫,其實能夠直接用官方給的預置圖層,只需將basemap屬性賦予幾個預置的字符串便可。

例如:

var map = new Map(
    {
        basemap: "streets",
        ground: "world-elevation"
    }
);

basemap就指定爲街道圖了(打開好像是OpenStreetMap)

官方預置了十幾種底圖,有興趣能夠去看看。

3. 屬性:ground詳解

這單詞直譯是地面,形象翻譯爲高程。與底圖同樣,容許你使用字符串的方式,使用官方給的預置世界高程信息。

若是有更精確的或者符合本身座標系須要的高程信息,這可能就須要經過實例化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 ]
  })
});

4. 總結

實際上,Map就是個圖層容器,只不過官方對各類圖層的功能進行了分類。

底圖作底,高程做高度信息,還有其餘的圖層,展現各類地理信息,構成了三層式體系。

下一節,我就簡單說說「其餘的圖層」,有哪些,怎麼建立,這可能要說起服務端了。

 

plus:要斷更比較長的時間,暫時把這個寫上,見諒。

相關文章
相關標籤/搜索