尝试在Google Maps Map Marker上设置图标时出现以下错误:
[ERR] 26/06/2018 10:02:25 a.m.:无法解码图像。提供的 图片必须是位图。 [ERR] 26/06/2018 10:02:25 a.m.:在 System.Runtime.ExceptionServices.ExceptionDispatchInfo.Throw() 在<0711a0626e0e4d58a44e8ca32787a4a9>:0中的[0x0000c] 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,它如上所述是从图像资源创建的。
我不明白为什么它会引发异常。 如果有人可以阐明这个问题,我将不胜感激。