開發google地圖,很重要的一個類就是MpaView,MapView類是一個讓你的應用可以和Google Maps融合到一起的類,就是說通過MapView你可以讓你的應用來下載、顯示、標記和控制Google Maps。但為了得到地圖數據,你就必須進行注冊來得到一個Maps API key(即google地圖API密鑰)。當然在程序開發和測試階段,這個Maps API key還只是臨時的,它現在和SDK debug certificate唯一綁定,當你的應用要發布的時候,你必須根據你的要發布的certificate來注冊一個新的Maps API Key,這個先不管。我們來看怎樣得到一個臨時的,即在開發和調試的時候使用的根據debug certificate得到的Maps API Key。
要注冊得到Maps API key,步驟如下先得到debug keystone的位置,然後根據這個debug keystone文件再得到MD5指紋,最後就是再根據這個MD5指紋得到google地圖API密鑰。
首先就是得到debug keystore的位置,默認情況下,這個debug keystore是你創建的AVD在同一個目錄下的,比如Windows 7系統和 Vista系統:C:\Users\<user>\.Android\debug.keystore,OS X 和Linux系統下是:~/.android/debug.keystore。當然這種查看方式很麻煩,簡便的是,如果你是用Eclipse+ADT進行android開發的話,你可以通過這樣的方式來得到debug keystore的位置:在Eclipse中點Windows>Preferences>Android>Build,在右側窗口中你就可以看到,有Default debug kystore
標題後面就是,比如我的是C:\Users\lx\.android\debug.keystore,復制下來,然後在dos命令行中輸入:
keytool -list -alias androiddebugkey -keystore "C:\Users\lx\.android\debug.keystore" -storepass android -keypass android -v
其中keystool是jdk安裝目錄的jre/bin目錄下的一個命令,如果你沒有配置環境變量的話,需要先轉到jre/bin目錄再執行上面的內容,這樣就會得到一個MD5 fingerprint,是類似於這樣的:
MD5: 97:91:D9:36:C9:99:F1:16:CD:9B:5D:B3:F8:49:37:3E
然後將這個MD5指紋,復制下來,打開這個鏈接:
http://code.google.com/intl/zh-CN/android/maps-api-signup.html,把剛才的MD5指紋輸入到指定位置,並在前面打上對號,然後點Generate API Key,就會得到我們費了這半天的勁想要得到的Google地圖API密鑰了,這個Maps API key是類似於這樣的一串代碼:
0a5PgXEMxha3KPIzWyUsr5AUCEueqpcEIPDm8Zg
注意,在上面得到MD5指紋的時候,輸入的命令中最後有個-v,而按google教程上的說明,沒有加-v,結果得到了證書指紋 (SHA1),而沒有得到我們要的MD5,這樣在申請Maps API key的是後它會提示“您輸入的指紋無效”。還有一點就是這個申請過程需要你有google賬號,沒有的話可以申請一個,很方便。
關於這部分的官方教程可以參看:
http://code.google.com/intl/zh-CN/android/add-ons/google-apis/mapkey.html
有了這個google地圖API密鑰,就來讓我們正是開發我們的地圖應用。
首先,新建一個Android項目,名為HelloGoogleMaps。因為要用到Maps庫,而這個庫又不是標准的android庫,所以需要在AndroidManifest.xml文件中的<application>標簽下加入以下代碼:
<uses-library android:name="com.google.android.maps" />
因為要從互聯網那裡獲得位置數據,所以還要再AndroidManifest.xml文件中加入訪問Internet的權限:
<uses-permission android:name="android.permission.INTERNET" />
然後就是,要顯示地圖,就要有一個MapView控件了。在布局文件main.xml文件中加入以下代碼:
<com.google.android.maps.MapView
android:id="@+id/mapview"
android:layout_width="fill_parent"
android:layout_height="wrap_content"
android:clickable="true"
android:apiKey="0a5PgXEMxha3KPIzWyUsr5AUCEueqpcEIPDm8Zg "
/>
其中apiKey就是我們前面申請的Google地圖密鑰,clickable屬性為true表示用戶可以與地圖進行交互。
然後打開HelloGoogleMaps.java這個文件,將繼承自Activity的HelloGoogleMaps類,改為繼承自MapActivity,MapActivity是Maps庫中的Activity的一個子類。並重寫一個叫isRouteDisplayed()的方法,這個方法是用來顯示路徑信息的,這裡我們沒有這方面的需求,讓其返回false:
@Override
protected boolean isRouteDisplayed() {
return false;
}
這個關於Google地圖的小項目寫到這裡,就已經可以實現地圖的顯示,並且可以在這個地圖上來回拖動了,不過還沒有我們常見的地圖的縮放功能,這需要在HelloGoogleMaps的oncreate()方法中填入以下代碼:
MapView mapView = (MapView) findViewById(R.id.mapview);
mapView.setBuiltInZoomControls(true);
這時候運行這個程序,你的程序就可以顯示Google地圖,並能夠來回平移和進行地圖縮放了。
當然你如果想標記你感興趣的位置的話,請繼續往下看: