スポンサーリンク

google map cluster icon utilのエラー対策

スポンサーリンク

以下のErrorで悩んだ人用に対策を残しておきます

java.lang.IllegalArgumentException: Unmanaged descriptor at com.google.maps.api.android.lib6.common.m.g(:com.google.android.gms.dynamite_mapsdynamite@210214051@21.02.14 (040408-0):0) at com.google.maps.api.android.lib6.impl.u.c(:com.google.android.gms.dynamite_mapsdynamite@210214051@21.02.14 (040408-0):1) at com.google.maps.api.android.lib6.impl.da.v(:com.google.android.gms.dynamite_mapsdynamite@210214051@21.02.14 (040408-0):2) at com.google.android.gms.maps.model.internal.p.aX(:com.google.android.gms.dynamite_mapsdynamite@210214051@21.02.14 (040408-0):19) at dv.onTransact(:com.google.android.gms.dynamite_mapsdynamite@210214051@21.02.14 (040408-0):4) at android.os.Binder.transact(Binder.java:604) at com.google.android.gms.internal.maps.zza.zzb(Unknown Source:20) at com.google.android.gms.internal.maps.zzv.zzg(Unknown Source:80) at com.google.android.gms.maps.model.Marker.setIcon(Unknown Source:30) at com.example.masstouring.mapactivity.PictureClusterRenderer.setClusterBitmap(PictureClusterRenderer.java:103) at com.example.masstouring.mapactivity.PictureClusterRenderer.access$100(PictureClusterRenderer.java:33) at com.example.masstouring.mapactivity.PictureClusterRenderer$1$1.run(PictureClusterRenderer.java:230) at android.os.Handler.handleCallback(Handler.java:789) at android.os.Handler.dispatchMessage(Handler.java:98) at android.os.Looper.loop(Looper.java:251) at android.app.ActivityThread.main(ActivityThread.java:6572) at java.lang.reflect.Method.invoke(Native Method) at com.android.internal.os.Zygote$MethodAndArgsCaller.run(Zygote.java:240) at com.android.internal.os.ZygoteInit.main(ZygoteInit.java:767)

ClusterManager, DefaultClusterRenderに渡しているContextはgooglemapのfragmentに紐づいていること

こんなミスをするのは自分だけかもしれませんが,とりあえずContext渡しておけばいいんでしょと,同一Activityに存在する別のContextを渡していると上記不具合が生じやすくなります.

一見上手く表示され,なまじ動作してしまうので,原因が分かりづらくなってしまいます.SupportMapFragmentのContextを渡しましょう

ClusterManager#removeItem/addItemの後にClusterManager#clusterを呼び出しているか

明示的に呼び出す必要があります.removeItemした後に呼び出さないとキャッシュが変に残って,次に表示させようとする際に不具合が生じます.

全部消去するときは以下を全部読んだほうがよい

ClusterManager#clearItems()
ClusterManager#cluster()
Googlemap#clear()

タイトルとURLをコピーしました