marker.setIcon抛出java.lang.IllegalArgumentException:非托管描述符

and*_*ats 5 java marker

我在更改googlemap上的googlemap标记时遇到麻烦。

这两种方法都不起作用

MarkerOptions markerOptions = new MarkerOptions().icon(BitmapDescriptorFactory.fromBitmap(MarkerManager.getBitmapFromVectorDrawable(context, R.drawable.marker_no_issues)));
                    marker.setIcon(markerOptions.getIcon());
Run Code Online (Sandbox Code Playgroud)

也不是

marker.setIcon(BitmapDescriptorFactory.fromBitmap(MarkerManager.getBitmapFromVectorDrawable(context, R.drawable.marker_no_issues)));
Run Code Online (Sandbox Code Playgroud)

方法getBitmapFromVectorDrawable:

public static Bitmap getBitmapFromVectorDrawable(Context context, int drawableId) {
    Drawable drawable = AppCompatDrawableManager.get().getDrawable(context, drawableId);
    if (Build.VERSION.SDK_INT < Build.VERSION_CODES.LOLLIPOP) {
        drawable = (DrawableCompat.wrap(drawable)).mutate();
    }

    Bitmap bitmap = Bitmap.createBitmap(drawable.getIntrinsicWidth(),
            drawable.getIntrinsicHeight(), Bitmap.Config.ARGB_8888);
    Canvas canvas = new Canvas(bitmap);
    drawable.setBounds(0, 0, canvas.getWidth(), canvas.getHeight());
    drawable.draw(canvas);

    return bitmap;
}
Run Code Online (Sandbox Code Playgroud)

我做错了什么?为什么我不能使用setIcon方法更改标记图标。我也尝试过原始的.png文件,我知道矢量到位图的效果很好。

Kav*_*eri 4

我遇到了同样的问题,如下解决 - 在将图标设置为标记对象之前,只需检查标记在谷歌地图上是否仍然可见如果您已清除地图并将图标设置为地图上的此标记对象,则会导致此错误

在这种情况下,只需创建另一个新对象,而不是通过 setter 方法更新同一对象