前言:
今天翻了一個上午的網路,在android 模擬器下配置google maps遇到了問題,查閱了一堆資料,多數講解的不是很清晰,呵呵,經過多次實驗終於OK了,現把每一步詳細列出來,提供給像我這樣的初學者。大家共同進步
1)首先你要確定你安裝的JDK位置,Windows->Preferences->Java->Installed JREs,你可以看到是Jre的location,再在dos cmd模式下查看你當前系統的path是否已經包含了。如果沒有包含添加到當前環境參數中。因為我們要用到的keytool命令在這個目錄下呀。
2)接下來就要找到你不前AVD的debug.keystore的位置,windows->perferences->android->build,
default debug keystore文字框中,列出C:\Documents and Settings\XXXXuser\.android\debug.keystore,這就是預設的debug.keystore,你可以先把這個檔案改一下名。我們需要建立一個新的debug.keystore
3)緊接著我們來建立一個新的debug.keystore,在cmd下,進入C:\Documents and Settings\XXXXuser\.android目錄
執行命令如下:
keytool -genkey -v -keystore debug.key store -alias androiddebugkey -keyalg RSA -validity 10000
輸入密碼,使用者等資訊確認後產生一個debug.keystore
4)好了,接下來我們就需要擷取MD5,去google申請一個apikey,很簡單
在目前的目錄下執行:
keytool -list -alias androiddebugkey -keystore debug.keystore
根據提示輸入你在第三步所設的密碼,ok,就會得到下面資訊,
Certificate fingerprint (MD5): FC:ED:DE:BS:16:1A:E8:05:F0:44:AD:4E:45:42:4B:D4
這就是我們申請apikey時需要的FC:ED:DE:BS:16:1A:E8:05:F0:44:AD:4E:45:42:4B:D4
通過瀏覽器訪問http://code.google.com/android/maps-api-signup.html
在My certificate's MD5 fingerprint文字框中輸入您剛剛擷取到的MD5碼
點擊Generate API Key,
Thank you for signing up for an Android Maps API key!
Your key is:
0yRkOg8325bNSbeuYXZMsj-CMG2rXXXqFBoa11A
這就是apikey了,記得儲存下呀
5)建立一個android項目
修改main.xml
<?xml version="1.0" encoding="utf-8"?>
<LinearLayout xmlns:android="http://schemas.android.com/apk/res/android"
android:orientation="vertical"
android:layout_width="fill_parent"
android:layout_height="fill_parent"
>
<view class = "com.google.android.maps.MapView"
android:id = "@+id/my_map"
android:enabled = "true"
android:apiKey="0yRkOg8325bNSbeuYXZMsj-CMG2rXXXqFBoa11A"
android:layout_width="fill_parent"
android:layout_height="wrap_content"
/>
</LinearLayout>
在layout中定義mapview時需要加入apikey, 如:android:apiKey="0yRkOg8325bNSbeuYXZMsj-CMG2rXXXqFBoa11A"
6)修改androidmanifest.xml
<?xml version="1.0" encoding="utf-8"?>
<manifest xmlns:android="http://schemas.android.com/apk/res/android"
package="com.testmap"
android:versionCode="1"
android:versionName="1.0">
<application android:icon="@drawable/icon" android:label="@string/app_name">
<uses-library android:name="com.google.android.maps" />
<activity android:name=".testmap"
android:label="@string/app_name">
<intent-filter>
<action android:name="android.intent.action.MAIN" />
<category android:name="android.intent.category.LAUNCHER" />
</intent-filter>
</activity>
</application>
<uses-sdk android:minSdkVersion="5" />
<uses-permission android:name="android.permission.INTERNET"></uses-permission>
<uses-permission android:name="android.permission.ACCESS_COARSE_LOCATION"></uses-permission>
<uses-permission android:name="android.permission.ACCESS_FINE_LOCATION"></uses-permission>
</manifest>
我們需要加入使用者庫引用<uses-library android:name="com.google.android.maps" />
當然了還要加入許可權的定義
<uses-permission android:name="android.permission.INTERNET"></uses-permission>
這兩步必不可少
7)最後就是主class了
import com.google.android.maps.GeoPoint;
import com.google.android.maps.MapActivity;
import com.google.android.maps.MapController;
import com.google.android.maps.MapView;
import android.os.Bundle;
public class testmap extends MapActivity {
/** Called when the activity is first created. */
@Override
public void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.main);
//get map view
MapView mv = (MapView) findViewById(R.id.my_map);
MapController controller = (MapController)mv.getController();
GeoPoint p = new GeoPoint((int) (24.7 * 1000000),(int)(-238.8 * 1000000));
controller.animateTo(p);
controller.setZoom(9);
}
@Override
protected boolean isRouteDisplayed() {
// TODO Auto-generated method stub
return false;
}
}