2013年5月8日 星期三

[Android] Use Google Map API v2 - Create a map project


此篇為續 [Android] Use Google Map API v2 - Get API Key


Step 3. Create a Map project

3.1 一如往常的 Create 一個 Android APP。
3.2 修改 Manifest.xml
*在 <application> Tag 裡加入
<meta-data    android:name="com.google.android.maps.v2.API_KEY"    android:value="AIzaSyBdVl-cTICSwYKrZ95SuvNw7dbMuDt1KG0"/>裡面的 android:value 裡填 Step2 最後獲取40characters 的 APIKEY



*  加入 MAP_RECEIVE Permission com.example.mapdemo要改成你的package name。 這個 package name 應該和你申請 key 時填入的一樣
<permission        android:name="com.example.mapdemo.permission.MAPS_RECEIVE"        android:protectionLevel="signature"/><uses-permission android:name="com.example.mapdemo.permission.MAPS_RECEIVE"/>


* 加入 READ_GSERVICES Permission (這個很多都教學都沒說到,記得要加)
<uses-permission android:name="com.google.android.providers.gsf.permission.READ_GSERVICES"/>

*加入其它必須 Permission
<uses-permission android:name="android.permission.INTERNET"/> 
<uses-permission android:name="android.permission.ACCESS_NETWORK_STATE"/> 
<uses-permission android:name="android.permission.WRITE_EXTERNAL_STORAGE"/> 
以下兩個是要使用定位功能才加入
<uses-permission android:name="android.permission.ACCESS_COARSE_LOCATION"/> 
<uses-permission android:name="android.permission.ACCESS_FINE_LOCATION"/>

* Requiring OpenGL ES version 2 
因為 map v2 需使用到 OpenGL ES v2 , 所以必須在<Manifest>下加入此 feature
<uses-feature android:glEsVersion="0x00020000" android:required="true"/>

3.3 Adding Library
* Import => Existing Android code into Workspace
Google Play Service Library 放在安裝目錄裡的 Extra\google\google_play_service\libproject\
注意!! 要勾選 Copy to workspace  不然會有 class not found exception。至於為何!? 猜想是Library link 的問題。這點我還不是很清楚。


* Add Library 
  在 Project Properties => Android => Library (click Add  button) => 選擇 google-play-service_lib
  

3.4 Layout and coding
快速的測試是否 work. 
在 main.xml 裡加入
<fragment xmlns:android="http://schemas.android.com/apk/res/android"
          android:id="@+id/map"
          android:layout_width="match_parent"
          android:layout_height="match_parent"
          android:name="com.google.android.gms.maps.MapFragment"/>

這裡有一點要注意,雖然我沒碰到,但很多人指出 如果是 API Level 8 的, 要改用 
  android:name="com.google.android.gms.maps.SupportMapFragment "/>



在 Activity 裡加入 (Eclipse 的 Template 已經加了) 

package com.example.mapdemo;
import android.app.Activity;
import android.os.Bundle;
public class MainActivity extends Activity  {

    @Override
    protected void onCreate(Bundle savedInstanceState) {
        super.onCreate(savedInstanceState);
        setContentView(R.layout.main);
    }
}


到這裡基本上在 Device 上應該可以 run 了。 但在模擬器上還不可以。 Reference : 如果有時間看的話, 不錯的教學,不過裡面有些點沒提到。






Google Android Map v2-Step by Step 這個很詳細不過不知道為何沒有 add Library 那一段




沒有留言:

張貼留言