在上一篇內容裏介紹了 關於ArcGIS Android開發的將來(「Quartz」版Beta)相關內容,期間也提到了關於API接口的重構,開發思路的調整,根據2015UC資料也能夠知道新版預計將在明年的時候推出。屆時在開發思路上將會往新版遷移。html
總的來講,雖然「Quartz」版的開發思路有所變化,但整體變化不大,這裏我將繼續以現有正式發佈版本爲主梳理ArcGIS Runtime SDK for Android 開發內容。java
參考API版本號:version 10.2.7。後續內容若不作特殊說明,均爲此版本。android
轉載請註明出處: http://www.cnblogs.com/gis-luq/p/4941715.htmlapi
地圖組件是全部空間數據的容器,是ArcGIS Runtime SDK的核心組件,也是全部GIS應用開發中的入口和基礎。在ArcGIS Runtime SDK for Android中,地圖組件的類名是MapView,它是Android中ViewGroup的子類,它與不少ArcGIS API中的Map、MapControl類做用是同樣的。佈局
MapView提供了完善的地圖顯示與控制功能:post
特殊說明:MapView默認空間參考及空間範圍爲所添加的第一個圖層的相關信息。動畫
有兩種方式能夠將MapView添加到應用當中:一個是XML方式,另外一個是硬編碼方式;通常多采用XML方式,方便調整佈局及其屬性相關設置。this
<!-- MapView with MapOptions settings for Topo basemap,zoom level, and centered in Costa Mesa, CA. --> <com.esri.android.map.MapView android:id="@+id/map" android:layout_width="fill_parent" android:layout_height="fill_parent" mapoptions.MapType="topo" mapoptions.ZoomLevel="13" mapoptions.center="33.666354, -117.903557"/>
MapOptions是用來初始化地圖的一些屬性的,包括預約義底圖類型(MapType)、放大的級別和地圖的中心點,它在10.2版本的API中第一次引入。MapOptions的MapType是一個枚舉型變量,有GRAY、HYBRID、NATIONAL_GEOGRAPHIC、OCEANS、OSM、SATALLITE、STREETS、TOPO這8個值,分別表明不一樣風格的底圖,這樣Android開發者們就不用每次都經過定義ArcGISTiledMapServiceLayer和底圖的url來加載底圖,也不用每次在初始化的時候費勁的定義底圖的放大級別和地圖中心點,而是僅用MapOptions的三個屬性就能夠完成初始化,代碼更省,效率更高。編碼
一樣的,MapOptions也能夠經過xml和java兩種代碼的方式使用。上面示例中就是使用xml方式使用MapOptions,下列示例代碼是使用Java硬編碼的方式使用MapOptions以及將MapView控件添加到應用中。url
public class MapViewActivity extends Activity { MapView mapView; MapOptions opt= new MapOptions(MapType.STREETS,33.666354, -117.903557,13); protected void onCreate(Bundle savedInstanceState) { super.onCreate(savedInstanceState); setContentView(R.layout.mapviewcenterat); //利用MapOption初始化MapView mapView = new MapView(this,opt);
//也能夠利用實例化ArcGISTiledMapServiceLayer添加底圖圖層 mapView.addLayer(
new ArcGISTiledMapServiceLayer("http://services.arcgisonline.com/ArcGIS/rest/services/World_Street_Map/MapServer"));
}
}
地圖組件MapView是全部空間數據的容器,同時也是控制操做地圖的對象,能夠在MapView中實現對地圖的放大、縮小、平移、單擊、長按、以及一些狀態的變化時的操做,例如當地圖的範圍變化時、地圖的加載狀態改變時等等。下面針對API中關於MapView的公有方法作一個詳細說明。
MapView中的公有方法 | |||||||||||
---|---|---|---|---|---|---|---|---|---|---|---|
int | addLayer(Layer layer, int index)
添加圖層在給定的索引。
|
||||||||||
int | addLayer(Layer layer)
添加一個圖層
|
||||||||||
void | addLayers(Layer[] layerArray)
添加圖層列表
|
||||||||||
void | centerAndZoom(double lat, double lon, float levelOrFactor)
MapView初始化時,縮放到給定的座標及顯示級別。
|
||||||||||
void | centerAt(double lat, double lon, boolean animated)
MapView初始化時,縮放到指定
座標,animated表示是否顯示動畫效果。 |
||||||||||
void | centerAt(Point centerPt, boolean animated)
MapView初始化時,縮放到指定Point,animated表示是否顯示動畫效果。
|
||||||||||
Bitmap | createSymbolImage(Symbol symbol, Geometry geometry, int width, int height, int color)
這個方法在API 級別10.2.2 被棄用。請使用 getLegendImage(Symbol, Geometry, int, int, int) 替代。
|
||||||||||
Bitmap[] | createSymbolImages(Symbol[] symbol, Geometry[] geometry, int width, int height, int color)
這個方法在API 級別10.2.2 被棄用。請使用 getLegendImages(Symbol[], Geometry[], int, int, int) 替代。
|
||||||||||
void | enableWrapAround(boolean enable)
啓用或禁用旋轉地圖功能。
|
||||||||||
ViewGroup.LayoutParams | generateLayoutParams(AttributeSet attrs) | ||||||||||
Callout | getCallout()
返回一個氣泡彈窗窗口。
|
||||||||||
Point | getCenter()
放回當前MapView的中心點。
|
||||||||||
Bitmap | getDrawingMapCache(float x, float y, int w, int h)
經過屏幕座標和長寬獲取MapView截圖。
|
||||||||||
Polygon | getExtent()
返回當前可視區域範圍。
|
||||||||||
Grid | getGrid()
返回地圖格網信息,格網的顯示狀態經過該實例控制。
|
||||||||||
Layer | getLayer(int index)
經過給定索引獲取圖層。
|
||||||||||
Layer | getLayerByID(long layerID)
經過圖層ID獲取圖層。
|
||||||||||
Layer | getLayerByURL(String url)
經過在線地圖服務的Url獲取圖層。
|
||||||||||
Layer[] | getLayers()
獲取MapView中全部圖層。
|
||||||||||
LocationDisplayManager | getLocationDisplayManager()
獲取位置管理類
LocationDisplayManager .
|
||||||||||
Envelope | getMapBoundaryExtent()
該方法在API 級別 10.2.2 被棄用。使用
getMaxExtent() 代替。
|
||||||||||
Envelope | getMaxExtent()
獲取MapView的最大範圍。
|
||||||||||
double | getMaxResolution()
該方法在API 級別
10.2.2 被棄用。使用 getMinScale() 代替。
|
||||||||||
double | getMaxScale()
返回最大比例尺。
|
||||||||||
double | getMinResolution()
該方法在API 級別 10.2.2
被棄用。使用
|
||||||||||
double | getMinScale()
返回最小比例尺。
|
||||||||||
OnLongPressListener | getOnLongPressListener()
獲取長按事件 OnLongPressListener。
|
||||||||||
OnPanListener | getOnPanListener()
獲取平移事件 OnPanListener。
|
||||||||||
OnPinchListener | getOnPinchListener()
獲取捏恰事件 OnPinchListener。
|
||||||||||
OnSingleTapListener | getOnSingleTapListener()
獲取單擊事件 onSingleTapListener。
|
||||||||||
OnStatusChangedListener | getOnStatusChangedListener()
獲取
MapView狀態改變事件 OnStatusChangedListener 。
|
||||||||||
OnZoomListener | getOnZoomListener()
獲取縮放事件 OnZoomListener。
|
||||||||||
double | getResolution()
返回 MapView的分辨率。
|
||||||||||
double | getRotationAngle()
返回當前地圖的旋轉角度,逆時針方向。
|
||||||||||
double | getScale()
獲取地圖比例尺。
|
||||||||||
SpatialReference | getSpatialReference()
返回MapView空間座標系統。
|
||||||||||
boolean | isAllowOneFingerZoom()
返回true ,是否容許一個手指縮放地圖。
|
||||||||||
boolean | isAllowRotationByPinch()
返回true ,若是旋轉縮放是容許的。
|
||||||||||
boolean | isLoaded()
返回true ,若是MapView初始化完成。
|
||||||||||
boolean | isRecycled()
返回true ,若是MapView已回收。
|
||||||||||
boolean | isShowMagnifierOnLongPress()
檢查地圖放大鏡功能是否啓用。
|
||||||||||
void | onChildViewAdded(View parent, View child) | ||||||||||
void | onChildViewRemoved(View parent, View child) | ||||||||||
void | pause()
暫停地圖。
|
||||||||||
void | recycle()
釋放
MapView引用的資源,以便他們能夠回收。
|
||||||||||
void | removeAll()
刪除全部圖層。
|
||||||||||
void | removeLayer(int index)
刪除指定索引圖層。
|
||||||||||
void | removeLayer(Layer layer)
刪除指定圖層。
|
||||||||||
void | restoreState(String state)
利用保存的地圖的中心的座標,當前地圖的分辨率,和LocationDisplayManager狀態(是否活躍和是否autopan)字符串恢復信息。
|
||||||||||
String | retainState()
保存地圖的中心的座標,當前地圖的分辨率,和LocationDisplayManager狀態(是否活躍和是否autopan)做爲一個字符串。
|
||||||||||
void | setAllowMagnifierToPanMap(boolean allow)
設置當放大鏡顯示時,是否可以平移地圖。
|
||||||||||
void | setAllowOneFingerZoom(boolean allowOneFingerZoom)
容許/不容許一個手指縮放。
|
||||||||||
void | setAllowRotationByPinch(boolean allowRotationByPinch)
容許/不容許縮放旋轉。
|
||||||||||
void | setEsriLogoVisible(boolean visible)
打開或關閉ESRI的logo。
|
||||||||||
void | setExtent(Geometry geometry, int padding)
設置空間範圍。
|
||||||||||
void | setExtent(Geometry geometry)
設置當前地圖顯示的空間範圍。
|
||||||||||
void | setExtent(Geometry geometry, int padding, boolean animated)
設置空間範圍。
|
||||||||||
void | setMapBackground(int bkColor, int gridColor, float gridSize, float gridLineSize)
設置地圖背景顏色和網格。
|
||||||||||
boolean | setMapOptions(MapOptions options)
設置地圖底圖參數
MapOptions。 |
||||||||||
void | setMaxExtent(Envelope env)
設置地圖顯示的邊界範圍
|
||||||||||
void | setMaxResolution(double maxResolution) | ||||||||||
void | setMaxScale(double maxScale)
設置地圖最大比例尺。
|
||||||||||
void | setMinResolution(double minResolution) | ||||||||||
void | setMinScale(double minScale)
設置底圖最小比例尺。
|
||||||||||
void | setOnLongPressListener(OnLongPressListener onLongPressListener)
設置長按監聽事件。
|
||||||||||
void | setOnPanListener(OnPanListener onPanListener)
設置平移監聽事件。
|
||||||||||
void | setOnPinchListener(OnPinchListener onPinchListener)
設置捏掐監聽事件。
|
||||||||||
void | setOnSingleTapListener(OnSingleTapListener onSingleTapListener)
設置單擊監聽事件。
|
||||||||||
void | setOnStatusChangedListener(OnStatusChangedListener onStatusChangedListener)
設置地圖狀態改變監聽事件。
|
||||||||||
void | setOnZoomListener(OnZoomListener onZoomListener)
設置放大縮小監聽事件。
|
||||||||||
void | setResolution(double res)
設置分辨率。
|
||||||||||
void | setRotationAngle(double degree, Point centerPt, boolean animated)
在給定點居中顯示,並旋轉到給定角度。
animated 是否啓用動畫效果。
|
||||||||||
void | setRotationAngle(double degree, boolean animated)
旋轉地圖到給定角度,
animated 是否啓用動畫效果。 |
||||||||||
void | setRotationAngle(double degree)
旋轉地圖到給定角度。
|
||||||||||
void | setRotationAngle(double degree, float pivotX, float pivotY)
以某個點爲中心旋轉地圖。
|
||||||||||
void | setScale(double scale, boolean animated)
設置地圖比例尺;
animated是否啓用動畫效果。
|
||||||||||
void | setScale(double scale)
設置底圖比例尺。
|
||||||||||
void | setShowMagnifierOnLongPress(boolean showMagnifier)
設置是否長按啓用放大鏡功能。
|
||||||||||
Future<Boolean> | switchBaseMap(BaseMap basemap, Portal portal, OnBaseMapSwitchListener listener)
切換底圖。
|
||||||||||
Point | toMapPoint(float screenx, float screeny)
將屏幕上的點轉換成地理座標點。
|
||||||||||
Point | toMapPoint(Point src)
將屏幕上的點轉換成地理座標點。
|
||||||||||
Point | toScreenPoint(Point src)
將地理座標點轉換成屏幕上的點。
|
||||||||||
void | unpause()
取消暫停地圖。
|
||||||||||
void | zoomTo(Point centerPt, float factor)
縮放到給定點。
|
||||||||||
void | zoomToResolution(Point centerPt, double res)
設定中心點,縮放到給定分辨率水平。
|
||||||||||
void | zoomToScale(Point centerPt, double scale)
設定中心點,縮放到指定比例尺。
|
||||||||||
void | zoomin()
放大地圖。
|
||||||||||
void | zoomin(boolean animated)
放大地圖。
|
||||||||||
void | zoomout()
縮小地圖。
|
||||||||||
void | zoomout(boolean animated)
縮小地圖。
|
以上內容翻譯如有錯誤,歡迎你們留言批評指出!