2014年4月30日 星期三

[Android] 地圖 - Google Maps Android API v2

注意

Google Maps Android API v1 的 MapView 無法在 API v2 繼續使用!別把 MapView 套過來使用!


環境

ADT(Eclipse)、使用 fragment。




一、安裝與設定 Google Play Services 的 SDK

請參考 [Android] 安裝與設定 Google Play Services 的 SDK



二、取得 Android certificate 和 Google Maps API key

打開 Google APIs Console

1. Create Project





2. Services -> Google Maps Android API v2 -> on





3. API Access -> Create New Android Key...



4. 輸入 SHA-1 fingerprint + ; + app's package name


For example:
BB:0D:AC:74:D3:21:E1:43:67:71:9B:62:91:AF:A1:66:6E:44:5D:75;com.example.android.mapexample

SHA-a fingerprint:
Linux/OS X
keytool -list -v -keystore ~/.android/debug.keystore -alias androiddebugkey -storepass android -keypass android
Windows Vista/7
keytool -list -v -keystore "%USERPROFILE%\.android\debug.keystore" -alias androiddebugkey -storepass android -keypass android


5. Key for Android apps (with certificates) -> API key



6. 在 AndroidManifest.xml 的 <application> 和 </application> 裡面貼上下面這段,value 的地方把 API_KEY 換成步驟五得到的 API Key。

<meta-data android:name="com.google.android.maps.v2.API_KEY"
    android:value="API_KEY" />


7. Rebuild project




三、在AndroidManifest.xml 中加入設定

以下這些加在 <manifest></manifest> 內但 <application></application> 外。


1. 一定要加。

<uses-permission android:name="android.permission.INTERNET" />
<uses-permission android:name="android.permission.ACCESS_NETWORK_STATE" />
<uses-permission android:name="com.google.android.providers.gsf.permission.READ_GSERVICES" />
<uses-permission android:name="android.permission.WRITE_EXTERNAL_STORAGE" />


2. 建議加。

如果有需要取得使用者現在位置
<uses-permission android:name="android.permission.ACCESS_COARSE_LOCATION" />
<uses-permission android:name="android.permission.ACCESS_FINE_LOCATION" />


3. 建議加。

由於 Google Maps Android API 是用 OpenGL ES version 2 繪製地圖,加了可以讓 Google Play Store 知道,不支援 OpenGL ES version 2 的裝置無法使用你的 app。
<uses-feature android:glesversion="0x00020000"
    android:required="true" />



四、加入地圖

1. 把地圖的 Fragment (下面這段)加到你想顯示的地方,ex: activity_main.xml。

<fragment android:id="@+id/map"
    android:layout_height="match_parent"
    android:layout_width="match_parent"
    android:name="com.google.android.gms.maps.SupportMapFragment" />

2. 在相對應的頁面 Java 檔(ex: MainActivity.java)的 onCreate 中加入 setContentView(R.layout.activity_main);。

public class MainActivity extends FragmentActivity {
    @Override
    protected void onCreate(Bundle savedInstanceState) {
        super.onCreate(savedInstanceState);
        setContentView(R.layout.activity_main);
    }
}



五、Build ,然後 Run

在實體裝置/模擬器上,一個最簡單、最初始化的地圖就會出現囉!

>> 無論是實體裝置或是模擬器,裡面要有 Google Play Store 才能跑喔!





後續可以參考 https://developers.google.com/maps/documentation/android/



沒有留言:

張貼留言