前提・実現したいこと
Kotlinアプリにて、GoogleMapをFragmentでindoor設定込みで表示させたい
現状
GoogleMap全体は問題なく表示される。
GoogleMapコントロールの拡大ボタンは表示される。
indoor表示だけ遷移状態によって表示されなくなる。
発生している問題・エラーメッセージ
GoogleMapで設定しているindoor表示がアクティビティ遷移で表示されない
※ただし、MainActivityから直接遷移する場合は、indoor表示される
NG:MainActivity→SubActivity2
OK:MainActivity→SubActivity1→SubActivity2
該当のソースコード
Activity遷移(ボタン押下でsetOnClickListener呼び出し(sub1→sub2)
※Main→sub2も同じ遷移方法
Kotlin
1 button_to_sub1.setOnClickListener { 2 val intent = Intent(getApplication(), subActivity2::class.java) 3 startActivity(intent) 4 }
mapFragmentの指定方法(sub2)
Kotlin
1 override fun onCreate(savedInstanceState: Bundle?) { 2 super.onCreate(savedInstanceState) 3 setContentView(R.layout.subActivity2) 4 5 mapFragment = supportFragmentManager 6 .findFragmentById(R.id.map) as SupportMapFragment 7 mapFragment.getMapAsync(this) 8 9 override fun onMapReady(googleMap: GoogleMap) { 10 mMap = googleMap 11 //座標や、コントールなど各種設定
AndroidManifest.xml(GoogleMap使用のために追加した項目)
AndroidManifest
1<uses-permission android:name="android.permission.ACCESS_FINE_LOCATION" /> 2 <meta-data 3 android:name="com.google.android.geo.API_KEY" 4 android:value="(google api key)" />
試したこと
Main→sub1遷移ではindoor表示ができて、Main→sub1→sub2遷移で表示できてないことより、sub1のときの地図表示に用いたインスタンスが解放しきれず、余計な情報が残っているのではないかと判断して調査しました。
<効果なし>
・mapFragmentの初期化
・GoogleMapインスタンスの初期化
・AndroidManifest.xmlの設定追加(ググった限りの設定を追加してみたが効果ないため初期状態に戻した)
<効果あったが実装レベルではない>
①前のActivityスタックをfinish()で削除
②onMapReady(...)内でsetOnMapLoadedCallbackよりMapを再レンダリングする
(問題)
・finish()することにより、前アクティビティへ戻れなくなる
・setOnMapLoadedCallbackで、Mapを再レンダリングすると一瞬シドニー位置が表示されてしまう
補足情報(FW/ツールのバージョンなど)
・AndroidStudio 4.0.1
・Maps SDK for android
ここにより詳細な情報を記載してください。
あなたの回答
tips
プレビュー