ArcGIS Runtime for Android開發教程V2.0(4)基礎篇---MapView

來源:互聯網
上載者:User

標籤:

原文地址:

ArcGIS Runtime for Android開發教程V2.0(4)基礎篇---MapView - ArcGIS_Mobile的專欄 - 部落格頻道 - CSDN.NET
http://blog.csdn.net/arcgis_mobile/article/details/8147328

MapView是ArcGIS Runtime SDK forAndroid的核心組件,通過MapView可以呈現地圖服務的資料,並且在MapView中定義了豐富的屬性、方法和事件,使用者通過MapView可以操作裝置的觸控螢幕,預設MapView可以響應使用者的各類手勢的操作,在GIS的開發中,什麼時候都少不了地圖操作。MapView是Android中ViewGroup的子類,也是ArcGIS Runtime SDK for Android中的地圖容器,與很多ArcGIS API中的Map、MapControl類作用是一樣的。

1、 MapView功能介紹

       MapView的強大不僅僅是因為它是呈現地圖資料的容器,MapView為我們提供豐富的功能,下面來分析MapView為我們提供哪些功能。

     首先,MapView具有呈現地圖能力,MapView可以添加一個或多個圖層,圖層又分很多種,如:切片圖層、動態圖層、本地圖層等等,圖層只有添加到MapView容器中才能進行顯示。

       其次,通過MapView我們可以設定地圖的顯示範圍、是否允許被旋轉、地圖背景、地圖的最大/最小解析度及其指定當前顯示的解析度/比例尺。

最後,我們來看一下MapView提供的豐富手勢監聽介面,通過這些監聽器,可以監聽我們各種手勢動作,如:點擊、雙擊、移動或長按等等操作。

2、 MapView添加方式

      我們有兩種方式可以將MapView添加到我們的應用當中:一個是XML方式,另一個是寫入程式碼方式;我們多採用XML方式,方便調整布局及其屬性的相關設定。

l XML方式:

<com.esri.android.map.MapView        android:id="@+id/map"        android:layout_width="fill_parent"        android:layout_height="match_parent"></com.esri.android.map.MapView>

l 寫入程式碼方式:

MapView map = new MapView(this);map.setLayoutParams(new LayoutParams(LayoutParams.FILL_PARENT, LayoutParams.FILL_PARENT));tileLayer = new ArcGISTiledMapServiceLayer("http://services.arcgisonline.com/ArcGIS/rest/services/World_Street_Map/MapServer");map.addLayer(tileLayer);setContentView(map );

3、地圖縮放、旋轉和座標轉換

         地圖縮放,是地圖中最基本的功能,我們可以是使用MapView進行地圖的縮放,MapView提供了多種地圖縮放的方式,如代碼所示:

mMapView.zoomin();        mMapView.zoomout();        mMapView.zoomToResolution(centerPt,res);        mMapView.zoomToScale(centerPt,scale);

對於上面的幾種縮放方式前兩種主要的功能是逐級縮放,也就是說當我們調用一次zoomin()方法地圖將放大一級,調用一次zoomout()方法地圖將縮小一級。

而對於後兩種縮放,它們是按照不同的解析度或比例尺進行縮放的,調用zoomToResolution(centerPt, res)方法進行縮放時,我們需要傳入兩個參數,第一參數centerPt為我們要按照哪個中心點進行縮放,因此我們需要傳入一個Point對象才行,第二個參數為要縮放到的解析度;對於zoomToScale(centerPt, scale)來說,和zoomToResolution(centerPt, res)很類似,兩個方法第一個參數是相同的,而第二個參數不再是解析度,是要傳入地圖的比例尺。

這裡的解析度或比例尺值與我們的發布的服務密切相關,發布的地圖服務如果產生了緩衝切片,在服務中我可以看到不同層級對應的比例尺和解析度,

服務地址:http://services.arcgisonline.com/ArcGIS/rest/services/World_Street_Map/MapServer

MapView還可以設定地圖的顯示範圍、比例尺、解析度、旋轉角度和地圖背景色,如:

map = (MapView)findViewById(R.id.map);……Envelope env = new Envelope(12957628.58241, 4864247.2803126, 12958114.4225065, 4864490.20036087);//範圍map. setExtent(env)//設定地圖顯示範圍map. setScale(295828763);//當前顯示的比例尺map. setResolution(9783.93962049996);//設定當前顯示的解析度//上面三個方法都可以改變地圖的顯示範圍,在代碼中是不會同時使用的map.setMapBackground(0xffffffff, Color.TRANSPARENT, 0, 0);//設定地圖背景map.setAllowRotationByPinch(true);//是否允許使用Pinch方式旋轉地圖map.setRotationAngle(15.0); //初始化時將地圖旋轉15度,參數為正時按逆時針方向旋轉。

除了上面的功能,MapView還有一主要的功能:“座標轉換”,這裡所說的座標轉換是指,怎樣把螢幕座標轉換成空間座標或將空間座標轉換成螢幕座標,如:

//給地圖添加一個點擊事件監聽map.setOnSingleTapListener(newOnSingleTapListener() {                        publicvoid onSingleTap(float x, float y) {                // TODO Auto-generated method stubPoint pt = map.toMapPoint(x,y);//螢幕座標轉換成空間座標Point screenPoint = map. toScreenPoint(pt);//轉換成螢幕座標組象             }});

 

4 、地圖監聽器

       對於移動端手勢的監聽是一個比較重要的環節,對於地圖的手勢操作也是由MapView來管理的,主要有以下幾種監聽:

l 地圖單擊監聽:OnSingleTapListener

l 平移監聽:OnPanListener

l 長按監聽:OnLongPressListener

l 縮放監聽:OnZoomListener

l 狀態監聽:OnStatusChangedListener

l pinch監聽:OnPinchListener

       有了這些監聽我們就可以對地圖無所以為操作,對於這些監聽在此不過多解釋,如果想詳細瞭解這些監聽的用法可查看3.4節(地圖事件)。

       到此,所有關於MapView的介紹告一段落,下面進入Layer世界。

ArcGIS Runtime for Android開發教程V2.0(4)基礎篇---MapView

聯繫我們

該頁面正文內容均來源於網絡整理,並不代表阿里雲官方的觀點,該頁面所提到的產品和服務也與阿里云無關,如果該頁面內容對您造成了困擾,歡迎寫郵件給我們,收到郵件我們將在5個工作日內處理。

如果您發現本社區中有涉嫌抄襲的內容,歡迎發送郵件至: info-contact@alibabacloud.com 進行舉報並提供相關證據,工作人員會在 5 個工作天內聯絡您,一經查實,本站將立刻刪除涉嫌侵權內容。

A Free Trial That Lets You Build Big!

Start building with 50+ products and up to 12 months usage for Elastic Compute Service

  • Sales Support

    1 on 1 presale consultation

  • After-Sales Support

    24/7 Technical Support 6 Free Tickets per Quarter Faster Response

  • Alibaba Cloud offers highly flexible support services tailored to meet your exact needs.