ArcGIS移動產品開發包Android和iOS 10.2版於前段時間正式發佈,除瞭眾所周知的強勁的離線支持,新版本中還有哪些激動人心的增強呢?請看“新特性系列博客”為您揭秘。
ArcGIS Runtime SDK for Android 10.2中有一個重大的新特性就是API的簡化,讓開發者能夠使用更少的代碼就能完成功能開發。比如,在10.2之前的版本中,加載底圖需要使用ArcGISTiledMapServiceLayer的特殊方法來指定底圖的初始化范圍、縮放等級、加載的圖層等,而在10.2新的編程模式中,通過新增的類MapOptions來預定義底圖、縮放級別、居中位置等,讓MapViews的創建過程大大簡化。
新增的MapOptions類
使用MapOptions類可以簡化創建MapView的方法,創建一個MapOptions的對象,並指定范圍、等級、居中位置等各種值,並將該對象作為參數傳入MapView的構造函數中。使用方法如下:
MapOptions topo = new MapOptions(MapType.TOPO, 23, -110, 9);MapView mMapView = new MapView(this, topo);
同樣的,現在可以使用MapOptions類的setMapOptions方法來輕松切換底圖:
MapOptions streets = new MapOptions(MapType.STREETS);mMapView.setMapOptions(streets);
上述方法可以將地圖的底圖切換到STREETS類型。為瞭定義各個底圖的extent,開發者必須在切換底圖之前獲取地圖的范圍,並使用setOnStatusChangedListener方法來設定地圖范圍的變化:
Polygon extent = mMapView.getExtent();mMapView.setMapOptions(streets);// honor the extent when switching basemapsmMapView.setOnStatusChangedListener(new OnStatusChangedListener() {private static final long serialVersionUID = 1L;@Overridepublic void onStatusChanged(Object source, STATUS status) {mMapView.setExtent(extent);}});
上面示例代碼顯示瞭MapOptions類在Java代碼中的用法,實際上,MapOptions類也可以在XML中使用(mapoptions屬性):
<com.esri.android.map.mapview</com.esri.android.map.mapviewandroid: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"/>
在XML中如上定義之後,在Java代碼中,隻需要一句代碼即可實例化MapView:
// Retrieve the MapView, Basemap, ZoomLevel, and Center from XML layoutMapView mMapView = (MapView) findViewById(R.id.map);
可使用示例向導加載名為Basemaps的例子來查看全部代碼。