Android教程網
  1. 首頁
  2. Android 技術
  3. Android 手機
  4. Android 系統教程
  5. Android 游戲
 Android教程網 >> Android技術 >> Android開發 >> 初級開發 >> Android Map開發基礎知識

Android Map開發基礎知識

編輯:初級開發

注冊 android 地圖 API 密鑰

運行:keytool -list -keystore ~/.android/debug.keystore

用得到的MD5碼到:

注冊完成後會得到如下的網頁:

您的密鑰是:

XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX

此密鑰適用於所有使用以下指紋所對應證書進行驗證的應用程序:

XX:XX:XX:XX:XX:XX:XX:XX:XX:XX:XX:XX

下面是一個 XML 格式的示例,幫助您了解地圖功能:

 <com.google.android.maps.MapVIEw
  android:layout_width="fill_parent"
  android:layout_height="fill_parent"                   android:apiKey="XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX"
  />

模擬器設置

建立一個"Google Inc.:Google APIs:3"的模擬器。

手機終端需要支持Google Add-ons

作為與Google合作的手機終端的制造商,如果想在自己的android終端中集成Google的一些應用,例如map,market,picasa,sync等,需要和Google簽約,這樣Google會有專人幫你將這一系列服務整合到你的平台中來。

作為沒有和Google合作的手機終端的制造商,我們可以使用破解的方法將Add-ons中的運行庫整合到自己的framework中來(build到手機終端的system.img中)。操作如下:

1. 在android中,額外支持Google Add-ons(Google Maps),需要將如下檔案(從標准的SDK中pull出來的,也可以從GPhone中pull出來)打包進System.img。Google Add-ons只需要1--2,Goolge Maps(Google的地圖程序) 需要1--5:

1)system/framework      com.google.android.maps.jar

2)system/etc/permissions  com.google.android.maps.XML

3)system/framework      com.google.android.gtalkservice.jar

4)system/etc/permissions  com.google.android.gtalkservice.XML

5)system/app          Maps.apk (Google Maps v3.0)

2.源碼:android Cupcake Release(經測試,在donut平台同樣適用。)

1)編譯源碼(為了生成out/target目錄中android最原始的東西)

2)將以上文件加入out/target/product/generic相應目錄,在源碼根目錄使用make snod打包,獲得新的system.img

權限和Maps庫設置

在manifest.XML中設置全相應的權限,比如:  

<uses-permission android:name="android.permission.Access_COARSE_LOCATION"/>

<uses-permission android:name="android.permission.INTERNET" />

在manifest.XML中加上要用的maps庫:

<manifest XMLns:android="http://schemas.android.com/apk/res/android"

package="com.example.package.name">

  ...

  <application android:name="MyApplication" >

    <uses-library android:name="com.google.android.maps" />

    ...

  </application>

  ...

</manifest>

Maps庫分析

Maps庫提供了十幾個類,具體可以參考這裡http://code.google.com/intl/ja/android/add-ons/google-apis/reference/index.Html,包括MapvIEw,MapController,MapActivity等。

(1)MapController

控制地圖移動,伸縮,以某個GPS坐標為中心,控制MapView中的view組件,管理Overlay,提供VIEw的基本功能。使用多種地圖模式(地圖模式(某些城市可實時對交通狀況進行更新),衛星模式,街景模式)來查看Google Map。

常用方法:animateTo(GeoPoint point)  setCenter(GeoPoint point)  setZoom(int zoomLevel) 等。

(2)MapVIEw

Mapview是用來顯示地圖的vIEw, 它派生自android.view.ViewGroup。當MapVIEw獲得焦點,可以控制地圖的移動和縮放。

地圖可以以不同的形式來顯示出來,如街景模式,衛星模式等,通過setSatellite(boolean)  setTraffic(boolean), setStreetVIEw(boolean) 方法。

MapView只能被MapActivity來創建,這是因為mapvIEw需要通過後台的線程來連接網絡或者文件系統,而這些線程要由mapActivity來管理。

需要特別說明的一點是,android 1.5中,map的zoom采用了built-in機制,可以通過setBuiltInZoomControls(boolean)來設置是否在地圖上顯示zoom控件。

常用方法:getController()  getOverlays()  setSatellite(boolean)  setTraffic(boolean),   setStreetVIEw(boolean)  setBuiltInZoomControls(boolean)等。

(3)MapActivity

管理Activity的生命周期,為mapvIEw建立及取消對map service的連接。

MapActivity是一個抽象類,任何想要顯示MapView的activity都需要派生自MapActivity。並且在其派生類的onCreate()中,都要創建一個MapView實例,可以通過MapViewconstructor (然後添加到View中ViewGroup.addView(VIEw)) 或者通過layout XML來創建。

(4)Overlay

Overlay是覆蓋到MapView的最上層,可以擴展其ondraw接口,自定義在MapView中顯示一些自己的東西。MapView通過MapVIEw.getOverlays()對Overlay進行管理。

除了Overlay這個基類,Google還擴展了2個比較有用的Overlay

 1)MylocationOverlay—集成了android.location中接收當前坐標的接口,集成SersorManager中CompassSensor的接口

我們只需要enableMyLocation(),enableCompass就可以讓我們的程序擁有實時的MyLocation以及Compass 功能(Activity.onResume()中)。

 2)ItemlizedOverlay—管理一個OverlayItem鏈表,用圖片等資源在地圖上作風格相同的標記。

(5)Projection:MapVIEw中GPS坐標與設備坐標的轉換(GeoPoint和Point)。

一個簡單的小例子

用一個小程序來演示一下android中地圖功能的開發。主要功能是實現了地圖的縮放,添加了菜單,從而可以手動選擇地圖的顯示模式等。

Step1: 新建一個android project, 注意這裡要選擇的buildtarget為"GoogleAPIs"

Step 2: 修改menifest文件:

<?xmlversion="1.0"encoding="utf-8"?> <manifest XMLns:android="http://schemas.android.com/apk/res/android" package="com.map.prac" android:versionCode="1" android:versionName="1.0"> <uses-permission android:name="android.permission.Access_COARSE_LOCATION"/> <uses-permission android:name="android.permission.INTERNET" />
Android Map開發基礎知識

  1. 上一頁:
  2. 下一頁:
熱門文章
閱讀排行版
Copyright © Android教程網 All Rights Reserved