看到標題有個(二)該不會又是很長的系列文了吧!?
並不會。
因為有點複雜。微懶。
昨天做完那些步驟之後,Android Studio 裡面預先幫你標註了澳洲雪梨的位子,你可以在 MapsActivity.kt 裡面刪除這個 marker 或是先保留,等之後再來放上你要標註的地點。
在做這些之前,先來抓取實際上你所在的位子。Google maps 內建了目前位置的按鈕 (直接加在昨天開好的專案裡面就好了):
override fun onMapReady(googleMap: GoogleMap) {
mMap = googleMap
mMap.isMyLocationEnabled = true
}
正常來說新增了 isMyLocationEnabled 這行程式會被標記錯誤,你可以滑鼠可以直接移到錯誤的地方,點選 Add permission Check:
if (ActivityCompat.checkSelfPermission(
this,
Manifest.permission.ACCESS_FINE_LOCATION
) != PackageManager.PERMISSION_GRANTED && ActivityCompat.checkSelfPermission(
this,
Manifest.permission.ACCESS_COARSE_LOCATION
) != PackageManager.PERMISSION_GRANTED
) {
// TODO: Consider calling
// ActivityCompat#requestPermissions
// here to request the missing permissions, and then overriding
// public void onRequestPermissionsResult(int requestCode, String[] permissions,
// int[] grantResults)
// to handle the case where the user grants the permission. See the documentation
// for ActivityCompat#requestPermissions for more details.
return
}
在 TODO 的那行會要你要求寫程式去要求權限,照著他的說明就會是這樣:
override fun onMapReady(googleMap: GoogleMap) {
mMap = googleMap
if (ActivityCompat.checkSelfPermission(
this,
Manifest.permission.ACCESS_FINE_LOCATION
) != PackageManager.PERMISSION_GRANTED && ActivityCompat.checkSelfPermission(
this,
Manifest.permission.ACCESS_COARSE_LOCATION
) != PackageManager.PERMISSION_GRANTED
) {
//要求有精確定位的權限,因精確定位裡包含了粗綠定位
ActivityCompat.requestPermissions(this, arrayOf(Manifest.permission.ACCESS_FINE_LOCATION), 0)
return
}else
mMap.isMyLocationEnabled = true
}
因為這個功能還要搭配一些權限,接下來在 AndroidManifest.xml 裡增添一些權限:
<?xml version="1.0" encoding="utf-8"?>
<manifest xmlns:android="http://schemas.android.com/apk/res/android"
package="com.example.mapstest">
<!--允許使用網路-->
<uses-permission android:name="android.permission.INTERNET"/>
<!--粗略權限-->
<uses-permission android:name="android.permission.ACCESS_COARSE_LOCATION"/>
<!--精確定位權限-->
<uses-permission android:name="android.permission.ACCESS_FINE_LOCATION"/>
其實裡面已經幫你加好了精確定位,在這邊補上允許粗略定位的權限。
以上都設定完成的話,在實機上的畫面會是這樣:
點擊右上角的圖示,就會移到目前的所在位置啦。
在上面進行設定的時候,應該會發現 onMapReady 這個 fun 裡面有已經設定好的雪梨標記點,其實只要程式後面的資訊,就可以改標記另一個地方:
val marker = MarkerOptions() //宣告一個 marker 變數
marker.position(LatLng(24.078311918785868, 120.71365502668787)) //放入要標記的點
marker.title("旦式設計") // marker 名稱
marker.draggable(false) // marker 是否可以拖移
mMap.addMarker(marker) //在地圖加上 marker 這個標記點
運行之後點選標記點,標記名稱就會顯示在上方:
Google Maps 的簡單介紹就到這邊啦。
下一篇見寫寫打家打家擺掰。