Google Maps Android API v2-- Android 新版地圖開發方法


近日如果在Android開發Google Map應用程式時會發現到為何坊間的書籍資料裡面的方法已經無法使用,然後就......
其實,2012年12月3日Google聲明淘汰掉 Google Maps Android API Version 1版本,同時並推出 Google Maps Android API v2版。
首當其衝的就是申請Map API Key,使用v1版本方式開發Map程式申請API Key到今年3月18日止就不再受理,但如果已經申請到的v1 API Key則可以沿用下去。
其次影響到的就是在Android開發Map程式方法,新版開發的方式變得比較複雜許多,所以本篇整理一下如何使用Google Maps Android API v2在Android上開發Google 程式。

Google Maps Android API v2的官方網址為:https://developers.google.com/maps/documentation/android/ 。其中說明到:

1. API需要配合Google Play Services 。Google Play services APK是Android系統中的一個背景服務,該服務提供了授權流程用來獲得Google的各項服務。詳見 Google Play Services
2. 地圖封裝在 MapFragment 類別中。
3. 由於地圖封裝在 MapFragment 類別中,你可以延伸標準的 Activity,而不是切換 MapActivity。
4.使用vector tiles技術可以使地圖顯示得更快,頻寬使用的更少。
5.Caching 比較少,所以看到的地圖空白區域會更少。
6.可以顯示3D及透視(室內)地圖。

另外需要注意的地方是在 Introduction to the Google Maps Android API v2官網中有個Attribution Requirements項目,這部分要求在寫App程式中如果有使用到 Google Maps Android API你比需要寫一個Menu或是在"關於"內容中法律聲明。

實作環境:
Win7 SP1 / Win8專業版
Java 1.6.0_37
Eclipse 3.7.2
ADT 21.1.0
asus nexus 7 (android 4.2.2)

以下是實作步驟:
開發環境初始設定:

1. 打開SDK中的SDK Manager,找到Extras並安裝Android Support Library及 Google Play Services兩個項目。

2. 打開Eclipse匯入Google Play Services函式庫。
開啟 File --> Import --> Android --> Existing Android Code Into Workspace --> Next

接著用Browse選擇上一個步驟所安裝的Google Play Services函式庫路徑: "路徑\android-sdk-windows\extras\google\google_play_services\libproject\google-play-services_lib"
這時你會看到中間 Project裡面有個新的專案名稱為google-play-services_lib
如果你要將這個函式庫拷貝到Eclipse的Workspace的話就將 copy project into workspace打勾
接著按下Finish

3.這時你可能會看到在Eclipse Console 出現Unable to resolve target 'android-8',解決的方法是在該專案名稱前按下滑鼠右鍵-->Properties-->Android 在Project Build Target勾選你有安裝的項目。


這樣就完成匯入Google Play Services函式庫了。google-play-services_lib這個函式庫我們不用修改任何地方,只要將該專案Open,然後讓你的程式當成Library去呼叫使用。

申請 Map API Key:
1. 首先必須要申請一個Google帳號,然後到  Google APIs Console 網頁按下 Create project... 建立一個專案。

2.接著選擇畫面左邊的 Services 找到Google Maps Android API v2項目並將右邊的開關選項ON起來。

3. 接著打開Windows 的命令列,輸入: keytool -list -v -keystore "C:\Users\用戶名稱\.android\debug.keystore" -alias androiddebugkey -storepass android -keypass android 指令取得 Key
其中,debug.keystore所在位置查詢方法: 打開Eclipse --> Windows --> Preferences --> Android -->Build 在這個畫面中的 Default debug keystore項目中可以查到路徑。


4.上圖中,我們將SHA1:後面的一串字碼拷貝起來。然後到 Google APIs Console 網頁選擇左邊的API Access項目,接著選擇 Create new Android key...
接著會彈跳出一個 Configure Android Key for API Project的畫面,我們將剛剛複製的SHA1:後面的一串字碼貼在中間的框框內,然後輸入分號";"後面接著要開發的Android App專案名稱。


接著按下 Create 後Google APIs Console 頁面會多出個 Android專用的 API key。

此時,我們記下這組API key,讓接下來所要寫的程式使用它。

撰寫程式:
1. 開啟新專案:

其中需要注意的是 Package Name需跟前面申請的名稱一樣。

2.將前面所述的google-play-services_lib加入到函式庫中,在專案剛建立的專案名稱按下滑鼠右鍵-->Properties-->Android 在 Library 按下 Add 選擇 google-play-services_lib 然後按下OK,接著確認Library框框中的勾勾是綠色的。



3.開啟AndroidManifest.xml 首先加入權限:

<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="com.google.android.providers.gsf.permission.READ_GSERVICES"/>
<!-- The following two permissions are not required to use
     Google Maps Android API v2, but are recommended. -->
<uses-permission android:name="android.permission.ACCESS_COARSE_LOCATION"/>
<uses-permission android:name="android.permission.ACCESS_FINE_LOCATION"/>


接著如果使用OpenGL ES version 2來顯示在 中加入:

<uses-feature
        android:glEsVersion="0x00020000"
        android:required="true"/>


然後在 </application>上面輸入API key:

<meta-data
            android:name="com.google.android.maps.v2.API_KEY"
            android:value="輸入你所申請到的API Key" />



4. 開啟 res --> layout 中的 main.xml 定義一個名稱為map的MapFragment。

<RelativeLayout xmlns:android="http://schemas.android.com/apk/res/android"
    xmlns:tools="http://schemas.android.com/tools"
    android:layout_width="match_parent"
    android:layout_height="match_parent"
    tools:context=".MainActivity" >

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

</RelativeLayout>


5. 開啟  MainActivity 程式內容如下:


package edu.nkut.hellomap;

import android.app.Activity;
import android.os.Bundle;

import com.google.android.gms.maps.CameraUpdateFactory;
import com.google.android.gms.maps.GoogleMap;
import com.google.android.gms.maps.MapFragment;
import com.google.android.gms.maps.model.LatLng;
import com.google.android.gms.maps.model.Marker;
import com.google.android.gms.maps.model.MarkerOptions;

public class MainActivity extends Activity {
    static final LatLng NKUT = new LatLng(23.979548, 120.696745);
    private GoogleMap map;

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

        map = ((MapFragment) getFragmentManager().findFragmentById(R.id.map)).getMap();
        Marker nkut = map.addMarker(new MarkerOptions().position(NKUT).title("南開科技大學").snippet("數位生活創意系"));

        // Move the camera instantly to NKUT with a zoom of 16.
        map.moveCamera(CameraUpdateFactory.newLatLngZoom(NKUT, 16));
    }
}


執行結果:

執行結果必須在實際Android設備上執行,至目前為止 模擬器上無法執行是正常的,主要是因為模擬器上並沒有Google Play商店、Google Play服務及地圖。

後記:
使用Google Maps Android API v2開發Android地圖應用程式確實比起v1版本多了些許步驟,加上使用了 MapFragment 類別看來還得要花點時間來適應新的寫法。
在 "路徑\android-sdk-windows\extras\google\google_play_services\samples\maps"中有官方所提供的範例可以參考,不過同樣確認的是不能再模擬器上面執行。





========= 04/30 補充說明 =========
如果使用SDK模擬器執行Google Maps Android API v2請參考友站(南開另一位老師經營):

Android程式設計 - 使用模擬器測試Google Maps API v2

執行結果:


========= 05/15 補充說明 =========
Android 4.X App開發教戰手冊修訂2版 作者:黃彬華 的教學。該YouTube有六個教學:
http://www.youtube.com/watch?v=nDnG3OiazXI&list=PLst_JE7uVIPUYE2EMG_8eboNgr4rX9WXg


參考:
1.Google Maps Android API v2
https://developers.google.com/maps/documentation/android/

2. Google Play Services
http://developer.android.com/google/play-services/index.html

3.Introduction to the Google Maps Android API v2
https://developers.google.com/maps/documentation/android/intro

4.Google APIs Console
https://code.google.com/apis/console/

5.keytool
http://docs.oracle.com/javase/6/docs/technotes/tools/windows/keytool.html

6.Getting Started
https://developers.google.com/maps/documentation/android/start#installing_the_google_maps_android_v2_api

7.Android程式設計 - 使用模擬器測試Google Maps API v2
http://nkeegamedev.blogspot.tw/2012/12/android-google-maps-api-v2.html

转自: http://cheng-min-i-taiwan.blogspot.hk/2013/04/google-maps-android-api-v2-android.html
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值