2015年12月19日 星期六

Android - Ch6 Google Maps Android API v2 安裝設置教學

 

為什麼 Activity 介紹完突然跳到 Google Maps Android API 呢? 很簡單,因為這次專題要用囉XD  

走到這,大抵Android架構、物件導向、Java程式、XML、Android SDK、UI設計、MVC架構、Google Maps都順過一遍了,App開發應該是要上軌道了 : )




一、Google Maps Android API 簡介


2013年2月,Android推出Google Maps Android API v2,使用全新的設計方式,改良地圖元件的畫面與效率,增加3D建築物,還有簡化的繪圖API。並已經在2013年4月停止舊的API。



[補充] 關於模擬器無法運行 Google Map Android API


Google Maps Android API v2 包含在 Google Play Service SDK,而我們使用的 Genymotion 模擬器為了避免商業爭議少了一些 library (如 google maps api、facebook SDK) 以至於無法使用。不過要安裝也十分簡單,找到你想裝的 library 載下來拖拉放到模擬器視窗即可安裝!

後來發現好像不好找,這裡提供一下連結:
http://rj-memo.blogspot.tw/2015/05/genymotiongoogle-play-service.html




二、Google Maps Android API 安裝設置流程


完成以下面的步驟,就可以建立好一個地圖元件。

  1. 用 SDK Manager 安裝 Google Play services SDK
  2. 新增一個 Google Map Activity
  3. 找到 googlemapsapi.xml 這個檔案,該檔的註解中有 Google Developers Console 的網址(很長很長)讓你登記使用 Google Maps Android API v2。
  4. 一鍵登記後拿到 Google Maps API Key,把那個Key取代googlemapsapi.xml的YOUR_KEY_HERE

大功告成,其實這個map的activity已經可以單獨run了 : )




三、Google Map API程式撰寫


這是完成一個 Maps Activity 後該有的檔案

  • googlemapsapi.xml:儲存與設定Google Maps API Key的資源檔案。
  • MapsActivity.java:地圖元件。
  • activity_maps.xml:地圖元件使用的畫面資源檔。

這裡主要是 MapsActivity.java 中有一些新寫法要學習。


1. 宣告地圖座標


地圖座標使用LatLng物件,LatLng建構子第一個參數表示緯度值,第二個參數表示經度值。

LatLng nkut = new LatLng(23.97918, 120.69686);


2. 標記位置


標記位置很簡單,使用addMarker即可。

 mMap.addMarker(new MarkerOptions().position(curLoc).title("SELECT_LOC"));


3. 控制地圖鏡頭


使用移動地圖鏡頭到指定座標點,例如:

moveCamera(CameraUpdate update)
animateCamera(CameraUpdate update) //有地圖移動效果

update為地圖鏡頭動作物件,必須使用CameraUpdateFactory類別建構CameraUpdate物件,例如:

CameraUpdateFactory.newLatLng (LatLng latLng)
CameraUpdateFactory.newLatLngZoom(LatLng latLng, double) // 同時設定地圖縮放等級

所以合起來就變成:

GoogleMap map = ((SupportMapFragment)
getSupportFragmentManager().findFragmentById(R.id.map)).getMap();
LatLng nkut = new LatLng(23.97918, 120.696867);
map.moveCamera(CameraUpdateFactory.newLatLngZoom(nkut,15.0f));




四、歡樂的 DEMO 時間


一個非常陽春的demo如下,可以選擇台灣主要城市送出,然後就會在另一個Activity中顯示該城市的經緯度位置。






References


拿經緯度的好站 : MyGeoPosition
http://mygeoposition.com/

Android Tutorial 第四堂(2)設計地圖應用程式 - Google Maps Android API v2
http://www.codedata.com.tw/mobile/android-tutorial-the-4th-class-google-maps-android-api-v2/

Google Develope Console
https://console.developers.google.com/

Android程式設計 - Google Maps API v2 調整地圖中心點
http://nkeegamedev.blogspot.tw/2013/05/android-google-maps-api-v2.html






技術提供:Blogger.