放着好好的成熟的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,剩下的只是小修小補。
看下圖便知:
(圖截取自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