2018/02/16
BitmapDescriptorFactory.fromResource() で "IBitmapDescriptorFactory is not initialized" が起こる場合の対処方法
@play-services-maps:11.8.0
対策1 onMapReady() が呼ばれたのを確認する
IBitmapDescriptorFactory がいつ初期化されるのかというと、Google Map の用意が出来た時です。
なので、onMapReady(GoogleMap)
が呼ばれた後であればこのエラーはおきません。
1 2 3 4 5 6 7 8 9 10 11 12 13 14 | @Override public void onMapReady(GoogleMap googleMap) { mMap = googleMap; // その他処理 } private void setMarker() { if (mMap == null ) { return ; } BitmapDescriptor icon = BitmapDescriptorFactory.fromResource(R.drawable.arrow); // Marker の更新など } |
私の場合、GPS のロケーション情報が届いた段階で、fromResource()
しようとして、落ちました。
「GPS 情報の更新」と「Marker の更新」は分離しておくべきすね1。
対策2 MapsInitializer.initialize(getApplicationContext()) を呼ぶ
onCreate()
等で MapsInitializer.initialize(getApplicationContext())
を呼んでしまうという手もあります。
参考
android - "IBitmapDescriptorFactory is not initialized" error - Stack Overflow
個人的には、この方法はちょっと強引かなと思います。 Map の準備ができていないと Marker を生成しても意味が無いですからね。
0 件のコメント:
コメントを投稿