Android GoogleMap Info Window maker.title活用

初投稿になります。
Androidの学習を初めて、3ヶ月目に作成したアプリでつまづいた点をまとめてみました。
Info Windowのmarker.title(日付)を利用する点にポイントを絞っていますので、
コードは抜粋して載せております。

#環境
Androide Studio 3.5.3
Android6,9にて動作確認済み

#この記事でやること
Realmで保存していた画像を、タップされたマーカーのInfo Windowから日付を受け取り、同じ日付で保存された画像を取り出す。

1.Info Window をタップ
<img width="222" alt="スクリーンショット 2020-04-15 8.53.14.png" src="https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/619313/bee3690f-4d84-a51e-e957-e328375f1fac.png">

2.保存されていた画像を表示
<img width="382" alt="スクリーンショット 2020-04-15 9.39.48.png" src="https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/619313/e95bedbc-734a-5aab-f2bc-b6f4e23225a2.png">

#つまづいた点
Info Windowをタップし、Info Windowに表示されていたコメントのRealmのidを渡す事ができなかった。
解決策として、markerの日付を渡す事が出来るので活用した。

#Realmで保存
保存するところだけコードを載せます。
`memo.dateTime = Date()`にて日付を保存しておきます。

```kotlin
// 添付画像を取得する
val drawable = pictureView.drawable as? BitmapDrawable
// 添付画像が設定されていれば画像を取り出してBASE64エンコードする
val bitmap = drawable?.bitmap
val baos = ByteArrayOutputStream()
if (bitmap != null) {
    bitmap.compress(Bitmap.CompressFormat.JPEG, 80, baos)
   }
val bitmapString = Base64.encodeToString(baos.toByteArray(), Base64.DEFAULT)
                    val memoStr = memoEdit.text?.toString() ?: ""
                    realm.executeTransaction {
                        val maxId = realm.where<Memo>().max("id")
                        val nextId = (maxId?.toLong() ?: 0L) + 1L
                        val memo = realm.createObject<Memo>(nextId)
                        memo.dateTime = Date()
                        memo.lat = lat
                        memo.lng = lng
                        memo.memo = memoStr
                        memo.picture = bitmapString
```
#Info Windowのイベント
`setOnInfoWindowClickListener`にてマーカークリックのイベント
 `marker.title`がマーカーの日付。

```kotlin
override fun onMapReady(googleMap: GoogleMap) {
        mMap = googleMap
        checkPermission()

        var intent = Intent(this, PictureDetailActivity::class.java)
        mMap.apply {
            setOnInfoWindowClickListener { marker ->
                intent.putExtra("marker", marker.title)
                startActivity(intent)
            }
        }
    }
```
#マーカーの日付を受け取り、同じ日付の画像を特定する
Realmで保存している、日付はDATE()型なのでStringへ変換する。
`val markertitle = (DateFormat.format("yyyy/MM/dd kk:mm", memo.dateTime).toString())`

```kotlin
class PictureDetailActivity : AppCompatActivity() {

    private lateinit var realm: Realm

    override fun onCreate(savedInstanceState: Bundle?) {
        super.onCreate(savedInstanceState)
        setContentView(R.layout.activity_picture_detail)
        realm = Realm.getDefaultInstance()

        val mymapId = intent.getStringExtra("marker")//タップされたマーカーtitle(日付を受け取る）

        val realmResult = realm.where(Memo::class.java)
            .findAll()//タップされたマーカーと保存されている日付と同じものを探す
        for (memo: Memo in realmResult) {
            val markertitle = (DateFormat.format("yyyy/MM/dd kk:mm", memo.dateTime).toString())

            if (mymapId == markertitle) {

                val decodedString = Base64.decode(memo?.picture, Base64.DEFAULT) // 文字列をbase64形式に変更
                val decodeByte = BitmapFactory.decodeByteArray(
                    decodedString,
                    0,
                    decodedString.size
                ) // base64文字列をBitmap形式に変更
                val pictureDrawable = BitmapDrawable(decodeByte) // Bitmap形式の画像をDrawable型に変更
                picturedetailView.setImageDrawable(pictureDrawable)//Drawableに変換したものをセット

            }
        }
    }
}
```
#まとめ
試行錯誤して`marker.title`を活用しました。
GoogleMapを活用したアプリ作成で、Info Windowの参考となる物が少なかったので活用して頂ければと思います。また、初学者ですのでご指摘等頂けると幸いです。
#参考
[Maps SDK for Android] 地図にMarkerを置く（その1・基本編）
https://qiita.com/outerlet/items/358088ca702721e1f3c4