放着好好的成熟的AJS 3.19不學,爲何要去碰乳臭未乾的AJS 4.2?html
4.2全線基礎學習請點擊【直達】前端
4.3及更高版本的補充學習請關注個人博客。前端框架
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有不少亮點的。app
所謂初生牛犢不怕虎,啃就是了。框架
但凡是有必定面向對象開發能力的地理信息系統相關的人均可以迅速上手AJS,這是個人感覺。這篇blog是我讀第一個AJS程序到如今爲止寫的,過去了不到10天,除去中間沒看的時間靜用時3天。因此,AJS不算很難。ps:我有C#+ArcObjects的基礎,能獨立完成一個Winform ArcEngine小項目。異步
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類型的。
1. 支持自定義widget
官方給出的例子中,就能夠利用前端框架React和AngularJS建立第三方widget。
2. 更多widget
LayerList和Print,即圖層列表和打印小部件提供了!
3. 升級矢量瓦片圖層並提供支持
4. MapView和SceneView提供了更多的事件茲磁。
5. 激光雷達點雲數據的支持
6. 高程查詢API
7. 容許自定義goTo()方法
數據編輯(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小部件、測距小部件、透明小部件、比例尺小部件、符號選擇器小部件、時間滑塊小部件等。
按照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這塊、大數據這塊、雲計算這塊。
方便查閱,點擊就跳轉。
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