2018/02/16
BitmapDescriptorFactory.fromResource() で "IBitmapDescriptorFactory is not initialized" が起こる場合の対処方法
@play-services-maps:11.8.0 ### 対策1 onMapReady() が呼ばれたのを確認する IBitmapDescriptorFactory がいつ初期化されるのかというと、Google Map の用意が出来た時です。 なので、`onMapReady(GoogleMap)` が呼ばれた後であればこのエラーはおきません。 ```java @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 の更新」は分離しておくべきすね 。 ### 対策2 MapsInitializer.initialize(getApplicationContext()) を呼ぶ `onCreate()` 等で `MapsInitializer.initialize(getApplicationContext())` を呼んでしまうという手もあります。 > 参考 > > [android - "IBitmapDescriptorFactory is not initialized" error - Stack Overflow](https://stackoverflow.com/a/13968128) 個人的には、この方法はちょっと強引かなと思います。 Map の準備ができていないと Marker を生成しても意味が無いですからね。
0 件のコメント:
コメントを投稿