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.com/2013/04/google-maps-android-api-v2-android.html

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 1
    评论
提供的源码资源涵盖了小程序应用等多个领域,每个领域都包含了丰富的实例和项目。这些源码都是基于各自平台的最新技术和标准编写,确保了在对应环境下能够无缝运行。同时,源码中配备了详细的注释和文档,帮助用户快速理解代码结构和实现逻辑。 适用人群: 适合毕业设计、课程设计作业。这些源码资源特别适合大学生群体。无论你是计算机相关专业的学生,还是对其他领域编程感兴趣的学生,这些资源都能为你提供宝贵的学习和实践机会。通过学习和运行这些源码,你可以掌握各平台开发的基础知识,提升编程能力和项目实战经验。 使用场景及目标: 在学习阶段,你可以利用这些源码资源进行课程实践、课外项目或毕业设计。通过分析和运行源码,你将深入了解各平台开发的技术细节和最佳实践,逐步培养起自己的项目开发和问题解决能力。此外,在求职或创业过程中,具备跨平台开发能力的大学生将更具竞争力。 其他说明: 为了确保源码资源的可运行性和易用性,特别注意了以下几点:首先,每份源码都提供了详细的运行环境和依赖说明,确保用户能够轻松搭建起开发环境;其次,源码中的注释和文档都非常完善,方便用户快速上手和理解代码;最后,我会定期更新这些源码资源,以适应各平台技术的最新发展和市场需求。 所有源码均经过严格测试,可以直接运行,可以放心下载使用。有任何使用问题欢迎随时与博主沟通,第一时间进行解答!
提供的源码资源涵盖了小程序应用等多个领域,每个领域都包含了丰富的实例和项目。这些源码都是基于各自平台的最新技术和标准编写,确保了在对应环境下能够无缝运行。同时,源码中配备了详细的注释和文档,帮助用户快速理解代码结构和实现逻辑。 适用人群: 适合毕业设计、课程设计作业。这些源码资源特别适合大学生群体。无论你是计算机相关专业的学生,还是对其他领域编程感兴趣的学生,这些资源都能为你提供宝贵的学习和实践机会。通过学习和运行这些源码,你可以掌握各平台开发的基础知识,提升编程能力和项目实战经验。 使用场景及目标: 在学习阶段,你可以利用这些源码资源进行课程实践、课外项目或毕业设计。通过分析和运行源码,你将深入了解各平台开发的技术细节和最佳实践,逐步培养起自己的项目开发和问题解决能力。此外,在求职或创业过程中,具备跨平台开发能力的大学生将更具竞争力。 其他说明: 为了确保源码资源的可运行性和易用性,特别注意了以下几点:首先,每份源码都提供了详细的运行环境和依赖说明,确保用户能够轻松搭建起开发环境;其次,源码中的注释和文档都非常完善,方便用户快速上手和理解代码;最后,我会定期更新这些源码资源,以适应各平台技术的最新发展和市场需求。 所有源码均经过严格测试,可以直接运行,可以放心下载使用。有任何使用问题欢迎随时与博主沟通,第一时间进行解答!
要在Android Studio中使用Google Maps API,需要进行以下步骤: 1. 在Google Cloud Console中创建一个项目,并启用Maps SDK for Android API。 2. 为项目创建API密钥。 3. 在Android Studio中创建一个新的Android应用程序项目。 4. 在应用程序模块的build.gradle文件中添加依赖项: ``` implementation 'com.google.android.gms:play-services-maps:17.0.0' ``` 5. 在AndroidManifest.xml文件中添加以下权限: ``` <uses-permission android:name="android.permission.ACCESS_COARSE_LOCATION" /> <uses-permission android:name="android.permission.ACCESS_FINE_LOCATION" /> ``` 6. 在AndroidManifest.xml文件中添加以下meta-data元素: ``` <meta-data android:name="com.google.android.geo.API_KEY" android:value="YOUR_API_KEY" /> ``` 7. 在布局文件中添加一个MapView元素: ``` <com.google.android.gms.maps.MapView android:id="@+id/map_view" android:layout_width="match_parent" android:layout_height="match_parent" /> ``` 8. 在Activity的onCreate方法中,获取MapView的引用,并调用其onCreate方法: ``` @Override protected void onCreate(Bundle savedInstanceState) { super.onCreate(savedInstanceState); setContentView(R.layout.activity_main); MapView mapView = findViewById(R.id.map_view); mapView.onCreate(savedInstanceState); } ``` 9. 在Activity的onResume方法中,调用MapView的onResume方法: ``` @Override protected void onResume() { super.onResume(); MapView mapView = findViewById(R.id.map_view); mapView.onResume(); } ``` 10. 在Activity的onPause方法中,调用MapView的onPause方法: ``` @Override protected void onPause() { super.onPause(); MapView mapView = findViewById(R.id.map_view); mapView.onPause(); } ``` 11. 在Activity的onDestroy方法中,调用MapView的onDestroy方法: ``` @Override protected void onDestroy() { super.onDestroy(); MapView mapView = findViewById(R.id.map_view); mapView.onDestroy(); } ``` 这样就可以在Android应用程序中使用Google Maps API了。要了解更多关于使用Maps SDK for Android API的信息,请参阅Google Maps Android API文档。

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值