相关疑难解决方法(0)

IllegalArgumentException:使用gms.maps.model.Marker.setIcon的非托管描述符

我有一个使用android-maps-utils滑动标记图标的应用程序.
我收到了使用Firebase崩溃报告的错误报告,我无法在源代码中跟踪,因为它gms.maps.model.Marker.setIcon是私有的,所以我要求帮助解决这个问题.
问题的以下部分分为:

  • 用户在做什么
  • 火灾基地崩溃向我报告了什么
  • 一些项目配置
  • 我尝试/发现试图理解/修复它

用户正在做什么
他在地图中放大和缩小(Fragment使用com.google.android.gms.maps.SupportMapFragment)

火灾基地崩溃向我报告了什么

异常java.lang.IllegalArgumentException:非托管描述符
com.google.maps.api.android.lib6.common.kb(:com.google.android.gms.DynamiteModulesB:162)
com.google.maps.api.android.lib6. impl.oc(:com.google.android.gms.DynamiteModulesB:75)
com.google.maps.api.android.lib6.impl.db.a(:com.google.android.gms.DynamiteModulesB:334)
com. google.android.gms.maps.model.internal.q.onTransact(:com.google.android.gms.DynamiteModulesB:204)
android.os.Binder.transact(Binder.java:387)
com.google.android.gms .maps.model.internal.zzf $ zza $ zza.zzL()com.google.android.gms.maps.model.Marker.setIcon()
co.com.spyspot.ui.content.sucursal.SucursalRender $ CustomSimpleTarget.onResourceReady (SucursalRender.java:156)co.com.spyspot.ui.content.sucursal.SucursalRender
$ CustomSimpleTarget.onResourceReady(SucursalRender.java:130)
com.bumptech.glide.request.GenericRequest.onResourceReady(GenericRequest.java:525)
com .bumptech.glide.request.GenericRequest.onResourceReady(GenericRequest.java:507)
com.bumptech.g lide.load.engine.EngineJob.handleResultOnMainThread(EngineJob.java:158)
com.bumptech.glide.load.engine.EngineJob.access $ 100(EngineJob.java:22)
com.bumptech.glide.load.engine.EngineJob $ MainThreadCallback .handleMessage(EngineJob.java:202)
android.os.Handler.dispatchMessage(Handler.java:98)
android.os.Looper.loop(Looper.java:148)
android.app.ActivityThread.main(ActivityThread.java:5443 )
java.lang.reflect.Method.invoke(Method.java)
com.android.internal.os.ZygoteInit $ MethodAndArgsCaller.run(ZygoteInit.java:728)
com.android.internal.os.ZygoteInit.main(ZygoteInit.java) :618)

和:

在此输入图像描述

一些项目配置

  • 我正在使用自定义渲染(SucursalRender extends DefaultClusterRenderer<Sucursal>)
  • 我正在像Glide一样下载Marker图标,就像我之前所说: Glide.with(context).load(id).fitCenter().placeholder(R.drawable.ic_no_image).into(simpleTarget);

simpleTarget是我处理Glide下载/缓存的图像的地方.我发布了所有代码,simpleTarget因为崩溃是从那里开始的:

private class CustomSimpleTarget extends …
Run Code Online (Sandbox Code Playgroud)

android google-maps android-maps-utils android-glide

47
推荐指数
5
解决办法
1万
查看次数

在Google Maps Android API v2中使用文本标记标记

我已经想出了这篇文章,但它适用于已弃用的Google Maps API

http://tech.truliablog.com/2012/02/23/custom-map-markers-for-android-google-maps/

在新的API中,我找不到一个简单的方法来做到这一点.事实上,我根本做不到.

基本上我想在地图上将TextViews作为标记使用9Patch drawable作为文本的背景.Trulia仍然在他们当前的应用程序中使用新的API v2.你可以在这里查看

Trulia当前的应用程序

我怎样才能做到这一点?

android google-maps google-maps-markers google-maps-android-api-2

13
推荐指数
4
解决办法
3万
查看次数

Android Google Map V2:如何在点击其他标记时更改以前点击的标记图标

更新:我通过添加previousMarker对象解决了性能问题.因此,只有先前单击的标记将被删除并替换为默认图标.但是,当我单击标记时,信息窗口仍未显示.


我有一个地图视图并在其上设置了一些标记.我想要的是当我点击一个标记时,它将其图标更改为一个不同的图标,当我点击另一个标记时,前一个标记的图标应该更改为其原始图标.

我所做的就是这样,但只要我点击标记就会改变标记图标.

@Override
public boolean onMarkerClick(Marker marker) { //Called when a marker has been clicked or tapped.

    LatLng markerPos=marker.getPosition();
    String markerLocationName=marker.getTitle();
    String markerSubCategoryName=marker.getSnippet();

    marker.remove();

    MarkerOptions markerOptions =
            new MarkerOptions().position(markerPos)
                    .title(markerLocationName)
                    .snippet(markerSubCategoryName)
                    .icon(BitmapDescriptorFactory.fromResource(R.drawable.new_icon));// Changing marker icon
    mMap.addMarker(markerOptions);
    Log.d("marker","change marker icon"); // can open a dialog window here
    return false;
}
Run Code Online (Sandbox Code Playgroud)

因此,如果我单击2个标记,我将显示2个新图标,同时我想要的只是当前单击的标记更改其图标.

所以我也做了类似的事情,增加了2行代码.它成功地做了我想要的但它有一些缺点(见下文).

@Override
public boolean onMarkerClick(Marker marker) { //Called when a marker has been clicked or tapped.

    mMap.clear();
    populateAllMarkersOnMap();//repopulate markers on map

    LatLng markerPos=marker.getPosition();
    String markerLocationName=marker.getTitle();
    String markerSubCategoryName=marker.getSnippet();

    marker.remove(); //remove …
Run Code Online (Sandbox Code Playgroud)

android google-maps

7
推荐指数
1
解决办法
4139
查看次数

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

我在更改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文件,我知道矢量到位图的效果很好。

java marker

5
推荐指数
1
解决办法
1958
查看次数