發布時間 北京時間 2020年4月10日
- 1. FeatureLayer的3d編輯功能
- 2. FeatureTable小部件(測試版本)
- 3. 查看和編輯附件
- 4. BuildingSceneLayer篩選模式
- 5. 在IntegratedMesh圖層之上疊加顯示要素
- 6. 網格(Mesh)材質
- 7. 點聚類功能的更新
- 8. API更新
- 9. 小部件更新升級
- 10. MapImageLayer增強
- 11. 影像圖層更新
- 12. StreamLayer更新
- 13. PictureMarkerSymbol更新
- 14. 統計查詢更新
- 15. 登錄界面更新
- 16. 突破性改進
- 17. 修復了BUG增強了功能
- 18. 添加了類、屬性、方法、事件
- 19. 廢棄的類、屬性、方法、事件
- 20. 包更新
ArcGIS API for JavaScript 4.15 發布日志
1. FeatureLayer的3d編輯功能
現在在3d模式下支持點線面要素的編輯了。使用Editor小部件來編輯FeatureLayer。
盡管Sketch工具以及支持地表要素的編輯,但是新的Z方向感知編輯工具可以修改地上或者地下的圖形。投影到地形和場景中的物體上的輔助線能幫助編輯者進行對齊捕捉。
當你使用3D點轉換工具(3D點轉換工具)交互式地旋轉或者縮放3D符號時,要素的屬性會通過視覺變量配置(VisualVariable)自動更新。現有的小部件例如FeatureForm、FeatureTemplates已經集成了3D符號。
2. FeatureTable小部件(測試版本)
FeatureTable小部件(FeatureTable)提供要素屬性的交互式編輯功能,該小部件可快速地加載較大的數據集。
用戶可選擇表中的行(也就是要素),然后根據某些屬性列進行排序,或者顯示、隱藏某些屬性列。
因為這個小部件還是測試版本,限制性的功能見最新版API文檔。
這個小部件既可以獨立運行,也可以與某個地圖圖層聯動運行。
3. 查看和編輯附件
3.1. 查看附件
4.15版本的API引入了一個新的附件小部件(Attachments),允許查看與要素有關的附件,例如圖片等。除了附件的縮略圖(如果附件是圖片)外,還能看到附件的格式、大小。現在,這個小部件取代了原有的附件顯示方式(即4.15版本之前的附件顯示都是在彈出窗中)。因此,附件查看功能被剝離出來,可以安排集成到別的邏輯中去。
3.2. 編輯附件
編輯小部件(Editor)已經更新以支持附件編輯。現在可以增刪改要素關聯的附件了。前提是,FeatureService支持編輯。
4. BuildingSceneLayer篩選模式
通過BuildingSceneLayer中的新篩選模式,可以突出顯示BIM模型中的要素,同時仍顯示建築物的其他部分。
篩選掉的其他BIM模型構件可以用X光模式渲染,也可以用線框顯示。
這個是示例代碼:點我
5. 在IntegratedMesh圖層之上疊加顯示要素
API現在將場景中的IntegratedMeshLayer視為地形。這意味着,你現在可以使用on-the-ground
模式將多邊形直接貼地(把矢量圖形直接繪制在Mesh表面)。點或者線符號如果設置了relative-to-ground
作為它們的高程模式,它們就會以IntegratedMeshLayer為基礎高程,相對拔高。
詳情見示例代碼:點我
6. 網格(Mesh)材質
現在使用Mesh創建的自定義三維模型可以用MeshMaterialMetallicRoughness這種材質了,支持鏡面曲率。現在可以直接在材料上或通過紋理貼圖調整金屬和粗糙度因子。
關於這種材料,可以看看這個例子:點我
7. 點聚類功能的更新
添加了對點層中包含Arcade表達式的渲染器進行聚類的支持。
8. API更新
8.1. esriConfig現在是全局變量
只需在全局條件聲明esriConfig變量即可。
<script>
var esriConfig = {
portalUrl: "https://myHostName.esri.com/arcgis"
};
</script>
8.2. 返回原生Promise
從4.15開始,返回ES6原生的Promise對象。所以,老代碼需要全部改了。ESRI計划在4.16中的Dojo定義的Promise。(譯者注:釋放信號——去Dojo化)。
ES6的Promise和Dojo的Promise大致相同,區別如下:
-
使用ES6的catch()代替otherwise()
-
使用AbortController.abort()方法替代cancel()
-
使用以下代碼替代always:
.catch(function(error){ /* 出錯時的代碼 */ }).then(function() { /* 不管怎么用都要執行的代碼 */ });
-
干掉了isFulfilled()/isResolved()/isRejected()方法。
-
對於Dojo的Promise,當promise狀態是resolved或者rejected時,then/catch方法會同步執行。在ES6的promise中,它們是異步執行。
如果不想用ES6的Promise,可以在dojoConfig中的has屬性進行配置,但是這個在4.16版本將會廢棄:
<script>
var dojoConfig = {
has: {
"esri-native-promise": false
}
};
</script>
8.3. Dojo聲明模塊
ESRI正試圖漸漸脫離Dojo的模塊聲明機制。在下一版本中,將完全刪除declare
模塊。這意味着,在4.15中如果繼承了API的類(模塊),你的派生類可以繼續用,但是在4.16中就不能用了。
現在已經在控制台啟用了警告信息。
你可以在官方的next倉庫中測試未發布版本的jsapi(傳送門)
9. 小部件更新升級
9.1. HTML清理程序更新
在版本4.14中,HTML清理器已添加到所有小部件中,以根據ArcGIS Online支持的HTML規范清理和轉義字符串。對於4.15,我們放寬了顯示HTML時的一些清理規則,使其比ArcGIS Online支持的HTML規范限制更少。我們還修復了與整理后的HTML內容不顯示在PopupTemplate.content
中有關的錯誤(請參見下文)。
9.2. DatePicker和TimePicker小部件
添加了兩個新的小部件,以幫助支持選擇日期和時間。添加了DatePicker和TimePicker小部件,以在輸入日期和/或時間信息時提供輕松的UI體驗。
9.3. Print小部件更新
現在,Print小部件的界面會根據打印的地圖是自動下載還是在新窗口中打開顯示不同的圖標。
有關更多信息,請參見fileName
和title
屬性。開發人員還可以定義在UI中對用戶可用的格式和打印布局。這些屬性也可以通過PrintViewModel
設置。
9.4. Editor小部件更新
9.4.1. 支持編輯附件
Editor
現在內置了編輯附件的功能。如果管理的要素圖層支持附件,那么增刪改功能將會被提供。無需進行其他任何配置即可允許編輯附件,Editor
小部件將遵循在關聯的服務上設置的任何訪問權限。
9.4.2. 工作流更新
有兩個新的Workflow類:CreateWorkflow
和UpdateWorkflow
。這兩個類分別用於添加新功能或編輯現有功能。功能保持不變,只是現在被分為各自的類。除了這兩個類之外,還有一些新類可以處理工作流數據:CreateWorkflowData
和UpdateWorkflowData
。此外,現在在Edits
類中引用了Workflow編輯。
9.5. Popup更新
9.5.1 Popup的附件
現在,Popup
使用Attachments
小部件處理附件。與以前的版本相似,有一個AttachmentsContent
類,可以將其配置為顯示與某個要素關聯的任何附件。區別在於Attachments
小部件存儲了過去可以通過AttachmentsContent
訪問的AttachmentInfo
。
9.5.2. 顯示隱藏可見的元素
可以打開/關閉Popup
上的可見元素。通過其visibleElements
屬性進行控制,該屬性同時包含closeButton
和featureNavigation
屬性。應該使用featureNavigation
屬性而不是已棄用的featureNavigationEnabled
屬性。
9.5.3. 設置actions的數量
可以通過其maxInlineActions
屬性設置在Popup
中顯示的最大actions數量。
9.5.4. 更新了圖表軸的值和文本位置
如果在Popup
中使用圖表的media element
時沒有負值,則y軸現在從零開始。此外,圖表的media element
的標題和圖表標題現在顯示在圖表上方。
10. MapImageLayer增強
MapImageLayer及其Sublayer類經過重構和現代化。針對動態圖層,地圖的可視化顯著地對智能地圖制圖的改進,並修復了一些圖層可見性錯誤。彈出行為的幾個問題已修復,例如在使用編碼的域值時能夠顯示描述。
我們通過Sublayer.load()來加載子圖層的元數據,用MapImageLayer.loadAll()來加載全部子圖層。當加載完所有的子突出后你可以訪問如下屬性和方法:
- fields & fieldsIndex
- fullExtent
- objectIdField & typeIdField
- sourceJSON
- getFeatureType() & getFieldDomain()
renderer和labelingInfo也一樣。
11. 影像圖層更新
開發人員現在可以使用TileImageryLayer
在2D地圖中利用客戶端處理和渲染瓦片影像服務的優勢。
12. StreamLayer更新
開發人員現在可以在SceneView
中利用客戶端查詢(client-query)和過濾(filtering)StreamLayer。2D的StreamLayerView也支持客戶端效果。
13. PictureMarkerSymbol更新
現在在MapView支持gif
和png
圖片了。
14. 統計查詢更新
percentile-continuous
和percentile-discrete
添加到statisticType
中了。百分位統計量表示該值高於或低於該值時,一組數據中給定值的百分比下降。
15. 登錄界面更新
訪問安全驗證的服務和用戶驗證時,登錄界面更新了,不再使用Dojo的Dijit對話框來實現。
16. 突破性改進
- 使用ES6原生Promise
- dgrid樣式不再包含在全局。如果在Web應用程序中使用dgrid,則需要單獨引用樣式表。
- 刪除了
ImageMeshColor
,從4.11版開始不推薦使用。改為在MeshMaterial.colorTexture
上設置MeshTexture
。 - 刪除了
requireUtils
,該版本自4.10版本起不推薦使用。請改用promiseUtils.create()
。 - 刪除了
ValueMeshColor
,從4.11版開始不推薦使用。請改用MeshMaterial.color
。 - 從
StreamLayer
中刪除了capabilities
和version
屬性。 Sketch
小部件和SketchViewModel
上的更新事件不再具有取消狀態。在update
事件中abort
的參數指示該進程已取消。attachmentInfos
屬性已從AttachmentsContent
中刪除。現在可以通過Attachments
小部件來處理它,並且可以通過其viewModel
對其進行訪問。- 現在,
Workflow.data
屬性將返回CreateWorkflow
或UpdateWorkflow
引用。 - 現在,
Editor
小部件和EditorViewModel
的activeWorkflow
屬性將返回對CreateWorkflow
或UpdateWorkflow
的引用。 - 現在在
Edits
類中引用了Workflow
編輯。
17. 修復了BUG增強了功能
略
18. 添加了類、屬性、方法、事件
略
19. 廢棄的類、屬性、方法、事件
略
20. 包更新
從4.15開始,ArcGIS Arcade升級到1.9;Dojo使用1.14.2(4.11到現在都是這個版本);dgrid使用1.2.1(從4.5開始用到現在);dstore使用1.1.2(從4.5開始用到現在)。
從4.12版本開始,使用Dojo5的@dojo/framework的5.0.4版本。