1. 程式人生 > >【技術貼】ArcGIS Runtime for Xamarin 使用SPK構建逼真的三維場景

【技術貼】ArcGIS Runtime for Xamarin 使用SPK構建逼真的三維場景

ArcGIS Runtime for Xamarin 使用SPK構建逼真的三維場景

SPK是一個重要的三維格式,SPK基於開源標準I3S,ArcGIS Runtime 很好的支援了SPK,這樣可以讓桌面端,移動端都能體驗到逼真炫酷,流暢的三維場景。


ArcGIS Runtime中SPK型別的三維的圖層就通過ArcGISSceneLayer物件來載入的。SceneLayer是一個專門用來顯示三維圖層的類。他既可以載入線上的Portal for ArcGIS 中的三維圖層,也可以使用SPK作為資料來源。通過SceneLayer獲得關於三維圖層的一些屬性,比如圖層是否可見,圖層的範圍,圖層透明度等。這個物件是我們今後做開發會經常要用的一個物件。

ArcGISSceneLayer有一個重要的屬性Source,這個屬性需要置頂一個Url物件,Url既可以是線上的網路服務,也可以是本地的spk資料。

動手環節

接下里我們就詳細的演示一下ArcGIS Runtime for .NET 開發一個載入SPK的 Android應用。

啟動VS2015 選擇ArcGIS Runtime App(Android)模板。工程命名為LoadSPKDemo,如下圖。


在建立好的工程裡,修改佈局檔案,佈局檔案的位置如下圖


只需要把原來的MapView 改成SceneView 就可以,這樣二維的場景立刻就變成了三維的地球了,如下圖:

 

在這裡補充一個知識點,什麼是SceneView。

SceneView 是三維場景的一個重要的物件,他是使用者檢視三維場景的一個入口,就像是一個展示三維內容的窗體,視覺化三維內容。使用者進行三維的操作和互動都是通過SceneView來進行的。SceneView包含了許多重要的屬性方法,比如相機Camera,和內容物件,臨時圖層。也提供了很多的方法比如:SetViewpointCamera來切換視角,識別圖層使用:IdentifyLayersAsync(Point,Double, Boolean, Int64),總之凡是展示和使用者互動的屬性方法,開發者都可以在這個物件裡找。

三維場景構建好了,就需要新增SPK資料,開啟MainActivity檔案,在OnCreate 方法中加入如下程式碼 :


程式碼很簡單,只需要短短几行程式碼就完成了SPK的載入。在這裡也需要補充說明一個重要的物件 Scene。

如果說SceneView是內容的展現者,那麼Scene就是要展現的內容。底圖,操作圖層,書籤,高程表面都是三維展示內容要素,一個SceneView只能有一個Scene,而一個Scene可以有多個底圖,圖層,書籤,以及影像, SceneView一個負責顯示,互動,一個負責邏輯內容,這也充分的體現了MVVM模式,UI邏輯分開。

同樣Scene也包個相關的屬性和方法,如basemap 是要新增的底圖,baseface是要新增的高程圖層,以及書籤等等,也就是可以說,凡是三維場景要展示的內容,都要新增到Scene中,才能在場景裡使用和展現。所以我們需要將pArcGISSceneLayer這個物件新增到Scene中。

到此這個簡單價值SPK Demo 就完成了,我們執行起來看一下;

VS中選擇要執行的裝置


程式執行起來就可以看到我們的SPK資料成功載入了。其實整個過程還是非常簡單的。


你還能做什麼?

ArcGISRuntime 可以實現豐富多樣的三維場景,大家不妨試試。


為何找不到ArcGIS Runtimefor Xamarin

隨著ArcGIS Runtime 100 版本的釋出,已經有原來獨立的SDK 合併到ArcGIS Runtime for .NET 中了。


ArcGISRuntime for Xamarin 有什麼好處?

使用ArcGIS Runtime forXamarin 開發自然在跨平臺上有很大的優勢,Xamarin 是原生的跨平臺。下圖是今年開發這大會上的案例。開發這大會上的案例是一個桌面的WPF,應用程式。右邊的移動Android 應用遷移過去的,可以毫不誇張的說,整個遷移過程沒有用10分鐘。是不是真的很提高生產力。