天天看點

ArcGIS API for JavaScript 4.2學習筆記[0] AJS4.2概述、新特性、未來産品線計劃與AJS筆記目錄

簡單介紹了AJS4.2的情況,以及4這個大版本與3的不同,以及4.2的新特性。

順帶說了說AJS4系的生命周期,來源準确。

最後是自己的學習筆記。

如若AJS4.2大體沒學完前4.3或者4.4出來了,那就在标題裡把4.2改為4.x[序号順序排下去][新] + 内容

如 ArcGIS API for JavaScript 4.3學習筆記[14][新] 新特性1

放着好好的成熟的AJS 3.19不學,為什麼要去碰乳臭未幹的AJS 4.2?

4.2全線基礎學習請點選【直達】

4.3及更高版本的補充學習請關注我的部落格。

ArcGIS API for JavaScript 4.2概述

AJS 4.2,即ArcGIS API for JavaScript 4.2,是美國ESRI公司針對WebGIS市場推出的、利用JavaScript和Dojo開發的一款産品,它在2016年12月釋出。而AJS 4.0 beta則在一年前就釋出了。

關于AJS3和AJS4選擇的問題,現在可能AJS4還不夠3某些方面厲害,尤其是Analysis部分等,這肯定的ESRI未來幾年要鞏固的方向。毫無疑問。如果急在眉梢需要開發一款2D資料處理很強的WebGIS應用,那麼我還是推薦用AJS 3.19,畢竟已經很成熟了,AJS3的文檔也滿天飛。如果要适應未來5年的潮流,我建議還是從AJS4學起,假如沒學過AJS3的話。

學了AJS3也無所謂,AJS4有很多亮點的。

所謂初生牛犢不怕虎,啃就是了。

但凡有一定面向對象開發能力的地理資訊系統相關的人都可以迅速上手AJS,這是我的感受。這篇blog是我讀第一個AJS程式到現在為止寫的,過去了不到10天,除去中間沒看的時間靜用時3天。是以,AJS不算很難。ps:我有C#+ArcObjects的基礎,能獨立完成一個Winform ArcEngine小項目。

AJS 4新特性

AJS4.X(下文簡稱AJS4)是16年正式釋出的産品,其新特性是:

1. 3D支援

這是在3.x版本(下文簡稱AJS3)裡沒有的,支援建構3D地圖和3D場景了。有關更多3D内容可以查詢官方的釋出日志。

2. 簡化API

把AJS3中不規範的類名規範化了,并簡化了一批類名,重分類了一些類所在子產品,更易用。詳情見官方網站中AJS3-AJS4變化表。

3. 直接使用屬性

像C#的屬性一樣,可以直接用“.”運算符調用屬性進行取值、指派,而不用再調setProperty()、getProperty()這種不簡潔的寫法。

4. 對事件監聽有變化

在AJS4中已經不再通過propertyname-change事件監聽屬性變化,現在隻需要使用.watch(property, callback)方法來監聽特定的屬性更改。當屬性發生變化時,回調函數将會接一系列參數,包括,受新值、舊值、屬性名、監聽對象。

5. 資料和視圖分開

在AJS3中,Map和Layer對象要處理繪制地圖,但是在AJS4中被單獨剝離出來稱為View對象了(2D為MapView,3D為SceneView)

View.map屬性可以引用Map對象,一個Map對象可以被多個View引用。

6. 僅支援AMD模式

AMD,不是超微半導體那個AMD,是異步子產品定義的意思。由于AJS 4采用了Dojo架構和ECMAScript6(即最新規範的JavaScript)實作,AJS就得以支援開發大型Web平台。

具體這個東西是什麼,各位看官還請移步比我更強的部落格中查閱【Asynchronous Module Definition】

7. Promise

異步操作的福音,then()方法簡直就是多層回調的救命稻草——誇張了點。不過Promise作為2015年ECMAScript新标準中的一個,能馬上被AJS采用,确實不錯,緊跟潮流。

有些地理處理任務是在伺服器端異步完成的,甚至異步内的回調函數還可能是異步的,多層異步的回調函數可不太好寫。官方就以buffer為例說明了then()的好處。

有些類繼承了Promise類,而有的屬性就是Promise類型的,有大量的方法傳回值類型也是Promise類型的。

AJS 4.2新特性

1. 支援自定義widget

官方給出的例子中,就可以利用前端架構React和AngularJS建立第三方widget。

2. 更多widget

LayerList和Print,即圖層清單和列印小部件提供了!

3. 更新矢量瓦片圖層并提供支援

4. MapView和SceneView提供了更多的事件茲磁。

5. 雷射雷達點雲資料的支援

6. 高程查詢API

7. 允許自定義goTo()方法

AJS 4.3以及更高版本未來将支援的特性

資料編輯(Editing)

繪圖工具(Draw and EditTools)

支援更多的圖層類型:GeoRSSLayer, KMLLayer, WMSLayer 和 WMTSLayer

支援更多的着色器(Renderer)

支援更多的小部件:BasemapGallery, Directions, FeatureTable, OverviewMap, analysis widgets etc.(卧槽最後兩個要爆炸快點出啊)

支援圖例控件

編輯WebMap(Writing WebMap)

其他的不太好翻譯,就直接複制粘貼了:Temporal awareness: rendering and filtering/GeoEnrichment/Extensions for Operations dashboard/DataReviewer tasks

————

更為細緻一些的内容:

我摘抄一些覺得重要的,其餘直接參考官方的對比表吧。

graphicsUtils、栅格影像的空間參考、擷取Popups的标題和内容、更多滑鼠鍵盤事件、啟用/禁用導航、修改Graphics、FeatureLayer的選擇功能/編輯功能/查詢附件、BookmarkItem小部件、Bookmarks小部件、ColorPiker小部件、高程滑塊小部件、LayerSwipe小部件、測距小部件、透明小部件、比例尺小部件、符号選擇器小部件、時間滑塊小部件等。

AJS 4 産品更新時間線

按照ESRI的習慣,3~4個月釋出一次新版本的話,2017年能看到AJS 4.3和4.4的釋出,一個是在3月,一個是在7月(AJS4.3和AJS4.4時間官方已經給出)。

//2017.03.06已釋出4.3

而AJS3則會在2017年停止更新,但是仍然會提供CDN支援直到AJS4完全替代它。AJS3估計還有1-2個版本更新了,更新的内容也不是很起眼,是以完全算是一款成熟的API,剩下的隻是小修小補。

看下圖便知:

ArcGIS API for JavaScript 4.2學習筆記[0] AJS4.2概述、新特性、未來産品線計劃與AJS筆記目錄

(圖截取自2016年1月的檔案)

圖中的表格可以看出,AJS1和AJS2已經退休了,AJS3仍然在提供支援,AJS4是2016年3月釋出的測試版。

AJS3将于2年後退休,而AJS4将于3年多後退休。

AJS3将在2017年1月進入成熟運作階段。

AJS4将于2018年5月進入成熟運作階段,截至寫這篇部落格時,還有大概一年多點時間看着AJS4的成長。

為什麼AJS3和AJS4隻差1年就退休了呢?而釋出時間卻差了整整4年。我猜,AJS4隻是ESRI對3D的一次試水,關鍵還是與ArcGIS Pro的結合,以及為AJS5做準備。WebGIS已經是ESRI的重心所在,它怎麼可能不發力于此呢?尤其是3D這塊、大資料這塊、雲計算這塊。

我的AJS 4.2學習筆記目錄

友善查閱,點選就跳轉。

ArcGIS API for JavaScript 4.2學習筆記[0] ★AJS4.2概述、新特性、未來産品線計劃與AJS筆記目錄

ArcGIS API for JavaScript 4.2學習筆記[1] 顯示地圖

ArcGIS API for JavaScript 4.2學習筆記[2] 顯示3D地圖

ArcGIS API for JavaScript 4.2學習筆記[3] ★官方第二章Mapping and Views概覽與解釋

ArcGIS API for JavaScript 4.2學習筆記[4] 第二章其餘感興趣的例子

ArcGIS API for JavaScript 4.2學習筆記[5] 官方API大章節概述與内容轉譯

ArcGIS API for JavaScript 4.2學習筆記[6] goTo()地圖動畫

ArcGIS API for JavaScript 4.2學習筆記[7] 鷹眼(縮略圖)

ArcGIS API for JavaScript 4.2學習筆記[8] 2D與3D視圖同步

ArcGIS API for JavaScript 4.2學習筆記[9] 同一種視圖不同資料(Map)同步

ArcGIS API for JavaScript 4.2學習筆記[10] 2D添加指北針widget、視圖儲存、視圖padding(第二章完結)

ArcGIS API for JavaScript 4.2學習筆記[11] ★官方第五章Popups(彈窗)概覽與解釋

ArcGIS API for JavaScript 4.2學習筆記[12] View的彈窗(Popup)

ArcGIS API for JavaScript 4.2學習筆記[13] Layer的彈窗(PopupTemplate)

ArcGIS API for JavaScript 4.2學習筆記[14] 彈窗的位置、為彈窗添加元素

ArcGIS API for JavaScript 4.2學習筆記[15] 彈窗内容的格式與自定義格式

ArcGIS API for JavaScript 4.2學習筆記[16] 彈窗自定義功能按鈕及為要素自定義按鈕(第五章完結)

ArcGIS API for JavaScript 4.2學習筆記[17] ★官方第七章Searching(空間查詢)概覽與解釋

ArcGIS API for JavaScript 4.2學習筆記[18] 搜尋小部件

ArcGIS API for JavaScript 4.2學習筆記[19] 搜尋小部件——使用更多資料源

ArcGIS API for JavaScript 4.2學習筆記[20] 使用緩沖區結合Query對象進行地震點查詢【重溫異步操作思想】

ArcGIS API for JavaScript 4.2學習筆記[21] 對3D場景上的3D要素進行點選查詢【Query類學習】

ArcGIS API for JavaScript 4.2學習筆記[22] 使用【QueryTask類】進行空間查詢

ArcGIS API for JavaScript 4.2學習筆記[23] 沒有地圖如何進行查詢?【FindTask類的使用】

ArcGIS API for JavaScript 4.2學習筆記[24] IdentifyTask類的使用(第七章完結)

ArcGIS API for JavaScript 4.2學習筆記[25] ★官方第八章Analysis(空間查詢)概覽與解釋

ArcGIS API for JavaScript 4.2學習筆記[26] 緩沖區分析【基于geometryEngine類】

ArcGIS API for JavaScript 4.2學習筆記[27] 網絡分析之最短路徑分析【使用RouteTask類】

ArcGIS API for JavaScript 4.2學習筆記[28] 可視域分析【使用Geoprocessor】

ArcGIS API for JavaScript 4.2學習筆記[29] 熱點(密度)分析——以報警頻率為例【使用Geoprocessor】

ArcGIS API for JavaScript 4.2學習筆記[30] 點和線高程查詢(第八章完結)

ArcGIS API for JavaScript 4.2學習筆記[31] (補充學習)Task類

ArcGIS API for JavaScript 4.2學習筆記[32] ★(補充學習)Graphic章概述

ArcGIS API for JavaScript 4.2學習筆記[33] ★(補充學習)Layer章概述

ArcGIS API for JavaScript 4.2學習筆記[34] (補充學習)彈窗章節再思考

ArcGIS API for JavaScript 4.2學習筆記[35] (補充學習)其他雜七雜八

ArcGIS API for JavaScript 4.2學習筆記[36] AJS4.x更高版本新特性後續學習目錄

ArcGIS API for JavaScript 4.2學習筆記[37] AJS類圖(使用XMind制作)

—————— 以下為姐妹篇——————

ArcGIS API for JavaScript 4.3 與 ArcGIS Server 關聯使用【地圖服務】   對Server的各種服務在AJS中的使用,請檢視這篇的末尾。

ArcGIS API for JavaScript 4.3 與 3.20 新特性【2017.03.06】

使用ArcGIS for Server 10.4 釋出NAServer 順帶介紹了AJS中三個網絡分析Task

繼續閱讀