標籤:review 計劃 習慣 網站 wms ups pop angular block
放著好好的成熟的AJS 3.19不學,為什麼要去碰乳臭未乾的AJS 4.2?
諸君,我喜歡嫩的——呸呸呸
諸君,我喜歡3D咋了?新事物會替代舊事物不是~
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小項目。
AJS4.x新特性
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模式
what?AMD?農企?暫時不評論。
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小組件、測距小組件、透明小組件、比例尺小組件、符號選取器小組件、時間滑塊小組件等。
AJS4產品升級時間軸
按照ESRI的習慣,3~4個月發布一次新版本的話,2017年能看到AJS 4.3和4.4的發布,一個是在3月,一個是在7月(AJS4.3和AJS4.4時間官方已經給出)。
而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學習筆記目錄
方便查閱,點擊就跳轉。
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] 第一個彈窗的實現(顯示座標)
ArcGIS API for JavaScript 4.2學習筆記[13] 待定
ArcGIS API for JavaScript 4.2學習筆記[0] AJS4.2概述、新特性、未來產品線計劃與AJS筆記目錄