【Android 入門開發實戰:口罩地圖】Google Map 範本學習(2)
【Android 入門開發實戰:口罩地圖】線上免費講義課程目錄
我們可以看看範例中,被加了哪些程式,即可以快速完成地圖標示的 APP。到時我們口罩地圖要加入 Google Map 地圖應用,如法炮製即可。
申請金鑰
前往 Google API Console,登入 Google 帳號,選擇新建專案或選舊有專案 → 憑證 → API 。即可以產生新的 key。
設定金鑰
產生新的金鑰後,可以點擊金鑰名,即可以進入該筆金鑰進行設定,可以更改金鑰名稱、綁定APP套件名稱與 SHA1 憑證指紋,防止別人冒用。
取得 SHA1 憑證指紋
快速取得 SHA1 憑證指紋方法,可以點擊 Android Studio 右側的 Gradle 視窗,展開後可以找到 app -> Tasks -> android -> signingReport,直接執行此腳本,即可以取得本機正式、測試 keystore 等相關憑證指紋。
輸出結果
添加 map 依賴庫 (dependencies)
implementation 'com.google.android.gms:play-services-maps:17.0.0'
加入金鑰
在 AndroidManifest.xml ,加入在 Google API Console 申請到的金鑰。<meta-data> 需加入在 <application> 裡面子項目中。
<meta-data
android:name="com.google.android.geo.API_KEY"
android:value="@string/google_maps_key" />
畫面佈局
在 activity_maps.xml 加入 fragment 標籤,最關鍵是 android:name 需要設定為:「com.google.android.gms.maps.SupportMapFragment」
<fragment
android:id="@+id/map"
android:name="com.google.android.gms.maps.SupportMapFragment"
android:layout_width="match_parent"
android:layout_height="match_parent"
tools:context=".MapsActivity" />
MapsActivity
onCreate 起來獲取 map 的 View 為 mapFragment,然後呼叫 getMapAsync 初始化地圖。
override fun onCreate(savedInstanceState: Bundle?) {
super.onCreate(savedInstanceState)
setContentView(R.layout.activity_maps)
val mapFragment = supportFragmentManager
.findFragmentById(R.id.map) as SupportMapFragment
mapFragment.getMapAsync(this)
}
MapsActivity 實作 OnMapReadyCallback ,當 Map 準備好,則會回呼(CallBack) onMapReady,我們在裡面透過地圖提供的 addMarker 方法,加入一個雪梨的圖釘座標。並透過 moveCamera 方法,將手機地圖畫面移動到此處。
class MapsActivity : AppCompatActivity(), OnMapReadyCallback {
...
...
...
override fun onMapReady(googleMap: GoogleMap) {
mMap = googleMap
// Add a marker in Sydney and move the camera
val sydney = LatLng(-34.0, 151.0)
mMap.addMarker(MarkerOptions().position(sydney).title("Marker in Sydney"))
mMap.moveCamera(CameraUpdateFactory.newLatLng(sydney))
}
}
輸出結果
參考資料
地圖物件
https://developers.google.com/maps/documentation/android-sdk/map?hl=zh-tw