1、前言
ArcGIS Runtime SDK是一整套用於構建原生及跨平臺的地圖應用程序的開發包,包括移動設備的Android、iOS、Windows Phone,針對桌面的.Net、Java、OSX,以及跨平臺的QT。這所有的API基於一個共同的C++內核,並在不同平臺上做了對應的封裝,使得在多平臺下的接口風格和編程模型相一致。當我們在一個平臺上學會了對應sdk的開發流程,在其他平臺上如果我們對該平臺比較熟也可以很快的將知識結構平移過去,快速的適應新平臺的開發工作。
2、ArcGIS Runtime SDKs產品家族
相信大部分開發者對ArcGIS Runtime SDKs這個名稱並不生疏,它實際上包含了一系列SDKs,用來開發應用於桌面和移動設備的應用程序。在10.2.2之前的版本中,ArcGIS Runtime SDKs包括ArcGIS Runtime SDK for Android、iOS、Windows Phone、Windows Mobile、JavaSE、QT、OS X、Windows Store及WPF共9種。
2014年3月10號,正式發佈了Runtime SDK的部分10.2.2版本,我們也初步窺見了10.2.2 Runtime SDK的新成員。在10.2.2的版本中,Esri對Runtime SDKs進行了重新整合,合併或重新設計了一些SDK。
從下表中可以看出,Esri是計劃將原來的Runtime SDK for Windows Phone、Windows Store以及WPF這3大SDK整合成一個,他們都是基於.NET技術,開發應用於Windows平臺上的應用,不過可能由於WPF SDK的技術架構有些特別,整合的工作量比較大,因此重寫了SDK for .Net,並暫時保留了WPF SDK;並且由於Windows Mobile系統已經很老,Esri在新的Runtime SDKs體系中也並未打算對其進行繼續升級。
因此,10.2.2版本中,正式向用戶推薦的SDKs主要有Android、iOS、.Net、Qt、OS X和Java這6種,主要是在Windows平臺上的開發包有較大改動,進行了大量的整合,我想這對.Net開發者們來說真是一個極好的消息。新的Runtime SDKs包括:
10.2.2之前的Runtime SDKs |
10.2.2版本的Runtime SDKs |
面向的操作系統 |
ArcGIS Runtime SDK for Android |
ArcGIS Runtime SDK for Android |
Android |
ArcGIS Runtime SDK for iOS |
ArcGIS Runtime SDK for iOS |
iOS |
ArcGIS Runtime SDK for Windows Phone |
ArcGIS Runtime SDK for .Net |
Windows Desktop(for WPF開發者) Windows Store(Windows 8.1) Windows Phone 8 |
ArcGIS Runtime SDK for Windows Store |
||
ArcGIS Runtime SDK for WPF |
ArcGIS Runtime SDK for WPF |
Windows Desktop |
ArcGIS Runtime SDK for Windows Mobile |
—— |
—— |
ArcGIS Runtime SDK for QT |
ArcGIS Runtime SDK for Qt |
Windows、Linux(64/32bit) |
ArcGIS Runtime SDK for OS X |
ArcGIS Runtime SDK for OS X |
Mac(Mountain Lion(OS X 10.8)及以上) |
ArcGIS Runtime SDK for JavaSE |
ArcGIS Runtime SDK for Java |
Windows、Linux(64/32bit) |
ArcGIS Runtime SDKs for Smartphones and Tablets是Esri爲開發者提供的移動應用開發包的統稱,Smartphones and Tablets的意思是“智能手機和平板”,顧名思義就知道包括面向Android、iOS和Windows Phone這三大主流移動操作系統的SDKs。在上個小節中已經提到,以後就沒有ArcGIS Runtime SDK for Windows Phone了,統一歸到了ArcGIS Runtime SDK for .Net旗下。
在ArcGIS 10.2.2版本之前,用戶只要註冊了Esri全球賬號,就可以在Esri的官網上免費下載各個Runtime SDKs安裝包以及其它資料,並基於此進行免費的應用程序開發和部署;但10.2.2版本之後,Esri的移動產品授權策略發生了一些變化,開始區分開發版、基礎版和標準版。針對不同的需求我們選擇的版本不同收費策略也將不同。
3、ArcGIS Runtime SDK for Android產品簡介
ArcGIS Runtime SDK for Android包括一個用於Android Studio的lib-project,用於eclipse等環境的jar函數庫,提供了豐富的工具、文檔和示例,使用戶能夠使用Java構建移動應用程序(這些應用程序將運用ArcGIS for Server提供的強大的製圖、地理編碼、地理處理和自定義功能)並將它們部署到Android系統的智能手機和平板上。
ArcGIS Runtime SDK for Android可以通過ArcGIS for Server REST服務獲取數據和服務資源。Esri發佈了GeoServices REST Specification,這一標準規定了ArcGIS REST Service各種接口的訪問參數及返回數據的結構,ArcGIS Runtime SDK for Android正是基於這一標準封裝的。其實,ArcGIS基於REST接口的API,包括ArcGIS Runtime SDK for Android/iOS/Windows Phone,ArcGIS API for Flex/ Silverlight/ JavaScript,以及ArcGIS Runtime SDK for Java/.NET,都是基於這一標準進行封裝的。儘管不同平臺、不同語言的開發包有其自己的特性,但其對應服務端的編程模型是一致的。下圖能很好的說明這一點。
除了ArcGIS for Server,ArcGIS Runtime SDK for Android還可以通過Portal API輕鬆訪問ArcGIS Online和Portal for ArcGIS上的資源,即與雲建立密切的聯繫。另外,在10.2的版本中,ArcGIS Android SDK也能使用本地離線的數據,作爲應用的重要數據源,這也是10.2的重大更新,被多數用戶和開發者所關注,後面教程中也會詳細介紹。截止目前寫稿爲止,ArcGIS Runtime SDK for Android最新版本是10.2.6-u2。有關ArcGIS Runtime SDK for Android 10.2.6-u2的所有資料,包括安裝包下載、系統支持、安裝環境說明、API接口說明、Sample、在線幫助等,都能從最新的ArcGIS for Developer站點https://developers.arcgis.com/android/查找到。
4、ArcGIS Runtime SDK for Android發展歷程
ArcGIS for Android從產品上來講分爲兩個部分,一是給開發者準備的ArcGIS Runtime SDK for Android開發包,專用來開發Android設備上的移動GIS應用;另一個是名爲“ArcGIS”的app,它使用ArcGIS Runtime SDK for Android開發包開發,具備常用的和典型的GIS功能,拿來即用,並可在Google Play等商店免費下載。
ArcGIS Runtime SDK for Android開發包的發展歷程如下:
- 約在2011年6月份,發佈ArcGIS Runtime SDK for Android beta版,就是開發者常說的0.9版本。它是一個測試版本,支持2.1,2.2的android系統。因爲是第一個支持android智能操作系統的版本,雖然是測試版,也備受開發者關注。這個版本中,可以使用ArcGIS for Server中的地圖服務、要素服務來進行移動端的地圖瀏覽和簡單查詢操作,使用設備的GPS座標,等等;
- 2011年12月14日,發佈了ArcGIS Runtime SDK for Android v1.0.1,這是第一個正式版的Android SDK。該正式版包含了beta全部功能,對其中一些bug進行了修復,並新增了許多功能,重要的功能如支持本地緩存的鬆散型切片,邁出了離線應用的第一步;總體上的功能已經比較完善,包括與Online和Portal的集成,使用設備的GPS,進行簡單的外業數據採集和編輯,使用Server和Online上的分析功能,能進行identify操作,可以顯示popup up,進行高級的幾何計算等。爲以後的版本功能提升提供了較好的原型;與0.9版本比較,1.0及以後的版本,SDK架構發生了很大的變化,主要變化在於核心功能改由C/C++編寫,SDK層(Java)通過JNI的方式調用,以此提高效率。因此,需要支持OpenGL ES2.0的GPU。
- 2012年4月7日,發佈ArcGIS Runtime SDK for Android v1.1。這個版本的改進主要是增加了高級符號,支持一個應用中多個MapView,以及Group Layer中支持對所有子圖層的操作,另外,與Online和Portal的結合更加深入,可以搜索組織的內容、用戶、組等信息;
- 2012年5月10日,發佈ArcGIS Runtime SDK for Android v1.1.1版本。這個版本僅對v1.1版本進行了一個修復——讓Eclipse能夠更好的、更正確的識別Android依賴庫;
- 2012年6月22日,發佈ArcGIS Runtime SDK for Android v2.0版本。這個版本最大的變化是對雲的支持全面加強,支持ArcGIS 10.1的桌面、服務器和雲產品,並正式推出Portal API來操作雲中的資源。可以說這是在雲計算的興起之下,Esri的“雲端”應用模式的全面體現。同時,發佈了同步的ArcGIS app for Android v2.0版本,也是全面的加強與雲的集成;
- 2013年1月16日,發佈ArcGIS Runtime SDK for Android v10.1.1版本。這個版本中新增了對網絡分析、PKI認證的加密服務的支持,新增對KML、WMS、OpenStreetMap等第三方地圖服務的支持;更爲重要的是,Runtime SDK的版本號從這個版本開始發生了巨大的變化,從2.0直接升級到了10.1.1,同時,其它Runtime SDK(包括Java SE, WPF, Windows Phone等)版本號全部都更新至10.1.1;
- 2013年7月1日,發佈ArcGIS Runtime SDK for Android v10.1.1 update 1。這個版本的升級變化也很小,主要是支持了Android Support Library 13,並支持ArcGIS Online上的OAuth2類型的資源的訪問;同時,這個版本提供了Javadoc;
- 2013年10月29日,發佈ArcGIS Runtime SDK for Android v10.2版本。10.2版本與之前的版本相比變化較大,一是新增了很多類和框架來輔助開發人員開發,如MapOptions和Application Framework for ArcGIS Android框架;同時,GraphicsLayer新增動態模式,性能極大提升;GeometryEngine中也新增了很多諸如測地線、偏移量、橢圓等方法來完成幾何計算;另一方面,更大的變化是推出了Beta版的離線功能,提供相應的類和接口,來實現業務數據的離線存儲、編輯,以及離線的地理編碼和路徑分析功能,這是國內用戶需求最大、備受關注的功能之一,因此一經推出便引起廣泛關注。只可惜這些離線的功能只是Beta版,並且需要10.2.1的Desktop和Server產品配合使用,因此離線功能並不能真正用於實踐;
- 2014年3月8日,發佈ArcGIS Runtime SDK for Android v10.2.2版本。這個版本有兩個最大的變化,一是正式推出了離線功能,10.2版本中Beta版的離線功能全部正式對用戶提供,包括離線的要素編輯和同步,離線的地理編碼,離線的路徑分析功能,以及按需動態緩存地圖切片到移動端等;另一大變化是授權的變化。ArcGIS Runtime SDK統一變更了授權方式,未經過授權的用戶只可使用其中基礎的功能,並且應用程序在分發時還會打上水印。
- 2014年4月21日,發佈ArcGIS Runtime SDK for Android v10.2.3版本。這個版本的主要變化在於它提供了一個全新的GeodatabaseFeatureServiceTable類來使用ArcGIS Feature Services,達到同時使用離線和在線數據的目的。
- 2014年10月6日,發佈ArcGIS Runtime SDK for Android v10.2.4版本。在這個版本中,更新了最低支持Android平臺版本的android 4.0.1(API級別14)。直接支持本地矢量格式和柵格格式,包括shapefiles、KML、geopackages,可以直接影像數據,包括:ASRP/USRP、CIB1,5,10、DTED0, 1, 2、GeoPackage、GeoTIFF、HFA、HRE、IMG、JPEG、JPEG2000、NITF、PNG、RPF、SRTM1, 2。支持離線的空間分析功能,視線和視域分析(beta)(暫不支持x86設備),優化GeodatabaseFeatureServiceTable,使得在線離線都可以使用功能單一的API。網絡地圖服務得到了增強,支持了WMTS服務、Imager服務。離線API的質量得到了改進,包括地圖的行爲和性能改、callout顯示增強。
- 2015年1月15日,發佈ArcGIS Runtime SDK for Android v10.2.5版本。支持android studio開發環境,示例代碼默認開發環境基於Android Studio。Eclipse插件被棄用。從版本10.2.5,Esri公司不再提供的Eclipse IDE工具插件的形式,但是,它是可以繼續使用jar包引用方式通過Eclipse完成開發工作。
- 2015年6月19日,發佈ArcGIS Runtime SDK for Android v10.2.6版本。該版本中大量的小bug得到了改進和更新。截稿至今2015年9月10日目前最新的版本爲v10.2.6-u2。
- 未來版本:“Quartz”,它是ArcGIS Runtime SDK下一個大版本的代號。這一版本包括了一系列顯著的功能增強,正式版本預期於2016年第一季度發行,之前會有幾個beta版本發行,第一個測試版定於2015年8月發行。(2015 UC)ArcGIS Runtime Quartz版本的新功能,包括:1) 地圖性能改進2) 支持更多數據格式,矢量數據包括移動地理數據庫(Runtime geodatabase),shapefile文件,KML;柵格圖像主要包括JPEG, JPEG2000, NITF, GeoTIFF, MrSID, CADRG, ECRG, DTED, SRTM, HRE以及激光雷達。此外,還支持OGC的GeoPackage,以及自定義的矢量和柵格數據源3) 本地分析在內的更多GIS分析功能4) 支持智能製圖,矢量切片和讀寫在線地圖的功能5) 支持3D場景,瀏覽、分析3D數據6) 支持Xamarin,允許.NET開發人員構建跨平臺運行的應用程序。
說明:一般官網僅提供最新的SDK,以及部分版本SDK下載,對於需要使用舊版SDK的朋友可以加羣 ArcGIS Runtime SDK 249819194 在羣空間下載所需歷史版本。
5、ArcGIS Runtime SDK for Android功能概述
使用ArcGIS Runtime SDK for Android,用戶能夠開發出功能強大的移動端GIS應用程序並將它們部署到Android系統的智能手機和平板上,主要功能可覆蓋:
- 地圖瀏覽:實現常見的地圖縮放、平移、旋轉操作,並且支持手勢響應;能加載和顯示圖例、指南針、羅盤等多種地圖輔助元素;
- 地圖測量:能實現長度、面積、周長及測地線等的測量;
- 數據查詢:提供多種類和接口,用來進行基於圖層的搜索、關鍵詞搜索、模糊查詢、周邊搜索等,還能實現空間查詢和非空間查詢的結合;
- 幾何計算:包括簡單的疊加分析、緩衝區分析,以及並、交、差等空間關係的運算;
- 分析:包括最小/最短路徑分析、地理編碼、通視分析等;
- 數據編輯:可編輯要素的空間信息或屬性信息,空間信息包括更改要素的符號,改變要素的形狀,移動要素的位置等,屬性信息可更改其名稱、照片等;還可新增、刪除要素,並對編輯的數據進行保存;
- 離線功能:可將數據下載到本地,或者直接使用本地數據源,在移動端實現數據的編輯、保存等功能,從而實現離線的外業作業流程;
- 數據可視化:可使用多種要素符號、彈出框、圖標、表格、柱狀圖等多種方式對數據進行展示和直觀表達;
- 訪問雲中的資源:可輕鬆訪問ArcGIS Online和Portal for ArcGIS中的資源和服務,實時同步,隨時隨地的使用雲中資源;
- GPS定位:使用設備的GPS模塊,進行準確的定位和導航,精度能滿足大衆和專業用戶的需求。
- ……
同步博客:http://www.cnblogs.com/gis-luq 作者:gis-luq 郵箱:[email protected]