Kotlin + Google Maps Api + Realm でアプリを作成してみましたので、メモしておきます。
Google Maps APIとは?
Google社が提供している高機能で世界中の地図データを扱っているGoogleマップを
以下のようなサービスを利用できるものです。
・マップ
カスタマイズしたマップやストリートビューの画像を取り入れて
リアルな世界をユーザーに提示するサービス
・ルート
広範なデータとリアルタイムの交通状況に基づき、
特定の場所から目的地への最適なルートをユーザーに提供するサービス
動作環境
Kotlin (1.3)
Android Studio (3.4.1)
Realm for kotlin (6.0.2)
Google Maps API
※ 参考資料
Realm ドキュメント
Google Maps API
Google Maps API手順
##① Google Map プロジェクト作成
File ->New -> Project -> Google Map Activity
##② Google Maps API を作成
・google_maps_api.xml のリンクを利用
・作成されたキー(AI***)を設定すること。
※作成されたGoogle Maps API
##③ 初期化
private lateinit var googleMap: GoogleMap
private lateinit var fusedLocationProviderClient : FusedLocationProviderClient
private lateinit var locationRequest: LocationRequest
private lateinit var locationCallback: LocationCallback
val realm = Realm.getDefaultInstance()
##④ 許可
<uses-permission android:name="android.permission.ACCESS_FINE_LOCATION"/>
fun checkMapPermission(): Boolean {
return ( ContextCompat.checkSelfPermission( this, android.Manifest.permission.ACCESS_FINE_LOCATION ) == PackageManager.PERMISSION_GRANTED)
}
##⑤ ポシション取得方法を要求
locationRequest = LocationRequest().apply {
interval = 10000 // 最遅の更新間隔(但し正確ではない。)
fastestInterval = 5000 // 最短の更新間隔
priority = LocationRequest.PRIORITY_HIGH_ACCURACY // 精度重視
}
##⑥ コールバック
locationCallback = object : LocationCallback() {
override fun onLocationResult(locationResult: LocationResult?) {
// 更新直後の位置が格納されているはず
locationResult?.lastLocation?.run {
Log.d("mapLocation", "latitude:$latitude ,longitude: $longitude ")
}
}
##⑦ 地図への描画
・線の描画
private val polylineOptions = PolylineOptions().width(5f).color(Color.RED)
val latLng = LatLng(latitude, longitude)
polylineOptions.add(latLng)
googleMap.addPolyline(polylineOptions)
・円描画
googleMap.addCircle(
CircleOptions()
.center(location) // 円の中心位置
.radius(radius) // 半径 (メートル単位)
.strokeColor(Color.BLUE) // 線の色
.strokeWidth(2f) // 線の太さ
.fillColor(0x400080ff) // 円の塗りつぶし色
)
Realm手順
##① Realm 追加
classpath "io.realm:realm-gradle-plugin:6.0.2"
apply plugin: 'realm-android'
下記のエラーが出る場合、「apply plugin: 'kotlin-kapt'
」を追加すること。
*エラー:Configuration with name 'kapt' not found.
##② Realm モデル
open class LocationModel(
@PrimaryKey var mapId : Long = 0,
var latitude: Double = 0.0,
var longtitude: Double = 0.0,
var date: Long = 0,
var title: String = ""
): RealmObject()
##③ Realm へ保存
realm.beginTransaction()
val model = realm.createObject<LocationModel>(getNextId())
model.latitude = latLng.latitude
model.longtitude = latLng.longitude
model.date = calendar.timeInMillis
realm.commitTransaction()
プロジェクト
#Index
kotlin,GoogleMaps Apiアプリ#2 テスト >>