React Native Maps — сбой приложения на Android с пользовательским маркером изображения

У меня есть следующий код для использования пользовательского изображения на маркерах:

<Marker 
key={marker.id} 
coordinate={{latitude: parseFloat(marker.lat), longitude: parseFloat(marker.lng)}} 
title={marker.name} 
description={marker.description} 
image={require('../../assets/logo-marker.png')} 
onCalloutPress={() => this.details(marker.id, marker.cover)} />

Он отлично работает на iOS, но продолжает падать на Android с этой ошибкой:

Ошибка при обновлении свойства «изображение» представления, управляемого: AIRMapMarker.

Я искал некоторые исправления, но не смог найти ничего об этой конкретной проблеме. Есть идеи ?

Подробности :

E/AndroidRuntime: FATAL EXCEPTION: main
    Process: neartrip.io, PID: 2896
    com.facebook.react.bridge.JSApplicationIllegalArgumentException: Error while updating property 'image' of a view managed by: AIRMapMarker
        at com.facebook.react.uimanager.ViewManagersPropertyCache$PropSetter.updateViewProp(ViewManagersPropertyCache.java:98)
        at com.facebook.react.uimanager.ViewManagerPropertyUpdater$FallbackViewManagerSetter.setProperty(ViewManagerPropertyUpdater.java:131)
        at com.facebook.react.uimanager.ViewManagerPropertyUpdater.updateProps(ViewManagerPropertyUpdater.java:51)
        at com.facebook.react.uimanager.ViewManager.updateProperties(ViewManager.java:46)
        at com.facebook.react.uimanager.NativeViewHierarchyManager.createView(NativeViewHierarchyManager.java:268)
        at com.facebook.react.uimanager.UIViewOperationQueue$CreateViewOperation.execute(UIViewOperationQueue.java:198)
        at com.facebook.react.uimanager.UIViewOperationQueue$DispatchUIFrameCallback.dispatchPendingNonBatchedOperations(UIViewOperationQueue.java:1036)
        at com.facebook.react.uimanager.UIViewOperationQueue$DispatchUIFrameCallback.doFrameGuarded(UIViewOperationQueue.java:1007)
        at com.facebook.react.uimanager.GuardedFrameCallback.doFrame(GuardedFrameCallback.java:29)
        at com.facebook.react.modules.core.ReactChoreographer$ReactChoreographerDispatcher.doFrame(ReactChoreographer.java:172)
        at com.facebook.react.modules.core.ChoreographerCompat$FrameCallback$1.doFrame(ChoreographerCompat.java:84)
        at android.view.Choreographer$CallbackRecord.run(Choreographer.java:909)
        at android.view.Choreographer.doCallbacks(Choreographer.java:723)
        at android.view.Choreographer.doFrame(Choreographer.java:655)
        at android.view.Choreographer$FrameDisplayEventReceiver.run(Choreographer.java:897)
        at android.os.Handler.handleCallback(Handler.java:790)
        at android.os.Handler.dispatchMessage(Handler.java:99)
        at android.os.Looper.loop(Looper.java:164)
        at android.app.ActivityThread.main(ActivityThread.java:6494)
        at java.lang.reflect.Method.invoke(Native Method)
        at com.android.internal.os.RuntimeInit$MethodAndArgsCaller.run(RuntimeInit.java:438)
        at com.android.internal.os.ZygoteInit.main(ZygoteInit.java:807)
     Caused by: java.lang.reflect.InvocationTargetException
        at java.lang.reflect.Method.invoke(Native Method)
        at com.facebook.react.uimanager.ViewManagersPropertyCache$PropSetter.updateViewProp(ViewManagersPropertyCache.java:83)
        at com.facebook.react.uimanager.ViewManagerPropertyUpdater$FallbackViewManagerSetter.setProperty(ViewManagerPropertyUpdater.java:131) 
        at com.facebook.react.uimanager.ViewManagerPropertyUpdater.updateProps(ViewManagerPropertyUpdater.java:51) 
        at com.facebook.react.uimanager.ViewManager.updateProperties(ViewManager.java:46) 
        at com.facebook.react.uimanager.NativeViewHierarchyManager.createView(NativeViewHierarchyManager.java:268) 
        at com.facebook.react.uimanager.UIViewOperationQueue$CreateViewOperation.execute(UIViewOperationQueue.java:198) 
        at com.facebook.react.uimanager.UIViewOperationQueue$DispatchUIFrameCallback.dispatchPendingNonBatchedOperations(UIViewOperationQueue.java:1036) 
        at com.facebook.react.uimanager.UIViewOperationQueue$DispatchUIFrameCallback.doFrameGuarded(UIViewOperationQueue.java:1007) 
        at com.facebook.react.uimanager.GuardedFrameCallback.doFrame(GuardedFrameCallback.java:29) 
        at com.facebook.react.modules.core.ReactChoreographer$ReactChoreographerDispatcher.doFrame(ReactChoreographer.java:172) 
        at com.facebook.react.modules.core.ChoreographerCompat$FrameCallback$1.doFrame(ChoreographerCompat.java:84) 
        at android.view.Choreographer$CallbackRecord.run(Choreographer.java:909) 
        at android.view.Choreographer.doCallbacks(Choreographer.java:723) 
        at android.view.Choreographer.doFrame(Choreographer.java:655) 
        at android.view.Choreographer$FrameDisplayEventReceiver.run(Choreographer.java:897) 
        at android.os.Handler.handleCallback(Handler.java:790) 
        at android.os.Handler.dispatchMessage(Handler.java:99) 
        at android.os.Looper.loop(Looper.java:164) 
        at android.app.ActivityThread.main(ActivityThread.java:6494) 
        at java.lang.reflect.Method.invoke(Native Method) 
        at com.android.internal.os.RuntimeInit$MethodAndArgsCaller.run(RuntimeInit.java:438) 
        at com.android.internal.os.ZygoteInit.main(ZygoteInit.java:807) 
     Caused by: android.content.res.Resources$NotFoundException: Resource ID #0x0
        at android.content.res.ResourcesImpl.getValueForDensity(ResourcesImpl.java:224)
        at android.content.res.Resources.getDrawableForDensity(Resources.java:876)
        at android.content.res.Resources.getDrawable(Resources.java:819)
        at android.content.res.Resources.getDrawable(Resources.java:794)
        at com.airbnb.android.react.maps.AirMapMarker.setImage(AirMapMarker.java:375)
        at com.airbnb.android.react.maps.AirMapMarkerManager.setImage(AirMapMarkerManager.java:219)

person Joss D.    schedule 30.10.2019    source источник
comment
Показать трассировку стека   -  person Rutvik Bhatt    schedule 30.10.2019
comment
@RutvikBhatt добавил   -  person Joss D.    schedule 30.10.2019


Ответы (1)


Вам нужно сделать код, как показано ниже:

<Marker 
  key={marker.id} 
  coordinate={{latitude: parseFloat(marker.lat), longitude: 
  parseFloat(marker.lng)}} 
  title={marker.name} 
  description={marker.description} 
  onCalloutPress={() => this.details(marker.id, marker.cover)} />

   <Image source={require('../../assets/logo-marker.png')} style={{height: 35, width:35 }} />

</Marker>
person Rutvik Bhatt    schedule 31.10.2019
comment
Он больше не вылетает, но на карте не появляются маркеры. - person Joss D.; 31.10.2019
comment
Установите высоту и ширину правильно, и это работает, и убедитесь, что ваш latlong правильный - person Rutvik Bhatt; 01.11.2019
comment
Ну, я использовал uri для внешнего источника, и это сработало. - person Joss D.; 02.11.2019