【概述】概述如何通過ArcGIS Server 9.3提供的Mobile SDK開發移動裝置應用。
【環境】 Windows XP SP3,ArcGIS Server 9.3,Visual Studio 2008,Windows Mobile 6 Professional SDK
預生成地圖緩存
我們已經知道,ArcGIS Mobile支援離線和線上兩種應用。我們可以選擇讓ArcGIS Mobile應用在首次請求的時候儲存地圖緩存,也可以在此之前(部署應用之前),預先生成緩存,跟應用一起釋出。是不是有點像原來的單機裝置應用?
好,讓我們把ArcCatalog打開,啟動ArcToolbox工具箱:
![](https://img.laitimes.com/img/__Qf2AjLwojIjJCLyojI0JCLicGcq5SMvwFMwQzcvw1cyoEaKlGRIJFWK9CXVZjQBFUQBFUQBF0Lcl0VyE0XINXQEx0Uvw1Yw8mNlp3V2ZnWf91Lc12bj5CdvB3cn9Gbi5Cci5yMvw1LcpDc0RHaiojIsJye.jpg)
在工具箱中,找到“Mobile Tools”。ArcToolbox專門為Mobile應用提供了兩個工具。其中“Generate Mobile Service Cache”就是用以生成Mobile地圖服務的緩存。
點選确認,經過處理,在指定目錄生成了緩存。我們可以比較一下,這些緩存和在移動裝置上通過 MobileService對象生成的緩存是一樣的。換句話說,在部署的時候将這些緩存部署到緩存目錄以後,MobileService可以直接打開它,無需與伺服器進行任何互動。
Mobile Basemap
這是Mobile的特殊資料,目的在于通過對地圖資料進行高度壓縮,使之在移動裝置上的性能更加優化。Basemap與我們前面使用的Mobile地圖服務資料不同,Basemap是不提供使用者進行操作的,它将在程式運作時首先被渲染,其他所有的Mobile地圖都将在它之上繪制——簡單地說,它應該被稱為底圖。
建立Mobile Basemap很簡單,我們從ArcToolbox中點選“Create Mobile Basemap”,根據提示操作即可。一個mxd文檔對應一個navmap檔案,每個圖層也都有相應的對應檔案。
在ArcGIS Mobile中,有個專門的命名空間“ESRI.ArcGIS.Mobile.SdcData”,這個命名空間包括了所有對Basemap進行操作的類。事實上,Mobile Basemap對應的資料叫做SDC base map data。
Basemap的使用非常簡單:
try
{
ESRI.ArcGIS.Mobile.SdcData.SdcMapLayer sdcMapLayer = new ESRI.ArcGIS.Mobile.SdcData.SdcMapLayer(@"/Storage Card/bj_basemap/bj.navmap");
map.MapLayers.Add(sdcMapLayer);
}
catch (Exception ex)
{
MessageBox.Show(ex.Message);
}
看一下效果。我們把整個北京地圖生成了Basemap預先部署到移動裝置上,而僅僅将建築物圖層釋出成地圖服務,如圖,Basemap自動襯在底部,想一下,對于某些應用,你會不會有一種把所有不經常變化的内容全部生成Basemap的沖動?
哦,還需要說明一下,Basemap和其他Mobile 地圖服務的空間參考需要是一緻的。
開發移動桌面程式
說是移動桌面程式,跟不移動的桌面程式有差別麼?是以,這一部分需要說的内容實在太少了,在移動裝置上開發調試都可以過來了,桌面程式還有困難麼?
當然,還是有一點點小地方需要注意。比如建立工程,一定不要采用預設設定.Net Framework為3.5版本。
常見問題
以下是Develop Help中提到的一些常見問題:
1. ArcGIS 9.3 的Mobile SDK 是否使用ArcGIS 9.2 釋出的 Mobile Service ?很遺憾,不能……
2. 我能用 Visual Studio 2003 開發ArcGIS Mobile 應用嗎?不能,ArcGIS 9.3 Mobile SDK需要.Net Compact Framework 2.0支援。
3. 我生成了Mobile 應用,但是為什麼我看不到地圖?出現這個問題,如果你使用了地圖緩存,檢查你的緩存路徑是否正确。如果是從伺服器擷取資料,那麼檢查你的 Mobile 地圖服務是否正常工作。同時,确認你的Map控件的Datasource屬性中的MobileService對象設定正确。
4. 為什麼ArcGIS Mobile toolbox 沒被添加到Visual Studio 2008 工程中來?ArcGIS 9.3 Mobile SDK不能和.Net (Compact) Framework 3.5相容,這是Visual Studio 2008的預設設定,注意在建立工程的時候選擇正确的.Net Framework。
5. 如何獲得開發ArcGIS Mobile 應用的最新資訊?http://edn.esri.com/index.cfm?fa=mobile.gateway
【結語】好了,到這裡,ArcGIS Mobile SDK 9.3的整體内容已經基本介紹完成。ArcGIS Mobile作為ArcGIS Server的一部分釋出,其與ArcGIS Server也的确是緊密相連。當然,事實上在某些條件下,ArcGIS Mobile還是可以脫離ArcGIS Server跑起來的。希望本文能給你開發移動GIS應用帶來一點幫助!