При попытке установить значок на маркере карты Google Maps появляется следующая ошибка:
[ERR] 26/06/2018 10:02:25 утра: не удалось декодировать изображение. Обеспеченный
изображение должно быть растровым. [ERR] 26/06/2018 10:02:25 утра: в
System.Runtime.ExceptionServices.ExceptionDispatchInfo.Throw ()
[0x0000c] в <0711a0626e0e4d58a44e8ca32787a4a9>: 0 в
Java.Interop.JniEnvironment + InstanceMethods.CallVoidMethod
(Экземпляр Java.Interop.JniObjectReference, Java.Interop.JniMethodInfo
метод, Java.Interop.JniArgumentValue * args) [0x00069] в
: 0 в
Android.Runtime.JNIEnv.CallVoidMethod (System.IntPtr jobject,
System.IntPtr jmethod, Android.Runtime.JValue * parms) [0x0000e] в
<5680b8d3acca4700bde9a113c467e3e5>: 0 в
Android.Runtime.JNIEnv.CallVoidMethod (System.IntPtr jobject,
System.IntPtr jmethod, Android.Runtime.JValue [] parms) [0x00017] в
<5680b8d3acca4700bde9a113c467e3e5>: 0 в
Android.Gms.Maps.Model.Marker.SetIcon
(Значок Android.Gms.Maps.Model.BitmapDescriptor) [0x0004b] в
<51f505f20f3f4c27854ba8f47994abdb>: 0 в
AMCS.Mobile.Mapping.Android.MarkerManager.UpdateMarker
(AMCS.Mobile.Entity.Mapping.IMarker markerInfo) [0x00083] в
: 0 в
AMCS.Mobile.Mapping.Android.MapHelper.UpdateMarker
(AMCS.Mobile.Entity.Mapping.IMarker markerInfo) [0x00000] в
: 0 в
AMCS.Mobile.AMCSMobile.Client.Android.CollectionRouteView.b__462_0
() [0x00000] в <1d292c66dbaa42139a432bad3cbbbc7b>: 0 в
Java.Lang.Thread + RunnableImplementor.Run () [0x00008] в
<5680b8d3acca4700bde9a113c467e3e5>: 0 в
Java.Lang.IRunnableInvoker.n_Run (System.IntPtr jnienv, System.IntPtr
native__this) [0x00008] в <5680b8d3acca4700bde9a113c467e3e5>: 0 в
(оболочка динамического метода)
System.Object: 6aee8cf7-156f-44a9-94d5-15cb0790d815 (intptr, intptr)
--- Конец управляемой трассировки стека Java.Lang.RuntimeException --- com.google.maps.api.android.lib6.common.apiexception.b: Не удалось
декодировать изображение Предоставленное изображение должно быть растровым. в
com.google.maps.api.android.lib6.impl.n.a (: com.google.android.gms.dynamite_dynamitemodulesb @ 12685024 @ 12.6.85
(040406-197041431): 12) в
com.google.maps.api.android.lib6.impl.o.a (: com.google.android.gms.dynamite_dynamitemodulesb @ 12685024 @ 12.6.85
(040406-197041431): 7) в
com.google.maps.api.android.lib6.impl.cy.a (: com.google.android.gms.dynamite_dynamitemodulesb @ 12685024 @ 12.6.85
(040406-197041431): 186) в
com.google.android.gms.maps.model.internal.q.onTransact (: com.google.android.gms.dynamite_dynamitemodulesb @ 12685024 @ 12.6.85
(040406-197041431): 87) на android.os.Binder.transact (Binder.java:507)
на com.google.android.gms.maps.model.internal.l $ a $ a.n (неизвестный источник)
на com.google.android.gms.maps.model.Marker.setIcon (неизвестный источник)
в mono.java.lang.RunnableImplementor.n_run (собственный метод) в
mono.java.lang.RunnableImplementor.run (RunnableImplementor.java:30)
на android.os.Handler.handleCallback (Handler.java:751) на
android.os.Handler.dispatchMessage (Handler.java:95) в
android.os.Looper.loop (Looper.java:154) в
android.app.ActivityThread.main (ActivityThread.java:6780) в
java.lang.reflect.Method.invoke (родной метод) в
com.android.internal.os.ZygoteInit $ MethodAndArgsCaller.run (ZygoteInit.java:1496)
на com.android.internal.os.ZygoteInit.main (ZygoteInit.java:1386)
Я вижу, что происходит сбой в методе UpdateMarker, который выглядит следующим образом:
public void UpdateMarker(IMarker markerInfo)
{
// _markerLookup is a dictionary defined earlier as:
// private Dictionary<IMarker,Android.Gms.Maps.Model.Marker> _markerLookup = new Dictionary<IMarker, Android.Gms.Maps.Model.Marker>();
// It is populated elsewhere
// Check if the dictionary contains a key for the given value
if (_markerLookup.ContainsKey(markerInfo))
{
Android.Gms.Maps.Model.Marker marker = _markerLookup[markerInfo];
marker.Position = new LatLng(markerInfo.MapCoordinate.Lat, markerInfo.MapCoordinate.Lng);
marker.Draggable = markerInfo.MarkerOptions.IsDraggable;
// Create BitmapDescriptor from Resource - Blue_Vehicle definitely exists and is a .png image
BitmapDescriptor bitmapDesc =
BitmapDescriptorFactory.FromResource(Resource.Drawable.Blue_Vehicle);
if (bitmapDesc != null)
{
marker.SetIcon(bitmapDesc);
}
}
}
Метод marker.SetIcon ищет BitMapDescriptor, который, как описано выше, создается из ресурса изображения.
Я не понимаю, почему это вызывает исключение.
Я был бы очень признателен, если бы кто-то смог пролить свет на эту проблему.