VectorDrawable с помощью BitmapDescriptor GoogleMapAndroid

Форум для тех, кто программирует под Android
Ответить
Anonymous
 VectorDrawable с помощью BitmapDescriptor GoogleMap

Сообщение Anonymous »

У меня возникла проблема с BitmapDescriptor карт Google при создании значка для MarkerOptions с использованием VectorDrawable, API 5.0+

Метод, использованный для создания:

Код: Выделить всё

@NonNull
private BitmapDescriptor getBitmapDescriptor(int id) {
return BitmapDescriptorFactory.fromResource(id);
}
Все работает отлично, когда аргумент id содержит рисуемый png, однако, если я попробую это с VectorDrawable, определенным в xml, приложение всегда аварийно завершает работу, когда googleMap.addMarker(marker) (

Код: Выделить всё

BitmapDescriptor
не имеет значения null).

Код: Выделить всё

11-05 10:15:05.213 14536-14536/xxx.xxxxx.app E/AndroidRuntime: FATAL EXCEPTION: main
Process: xxx.xxxxx.app, PID: 14536
java.lang.NullPointerException
at com.google.a.a.ae.a(Unknown Source)
at com.google.maps.api.android.lib6.d.dn.(Unknown Source)
at com.google.maps.api.android.lib6.d.dm.a(Unknown Source)
at com.google.maps.api.android.lib6.d.ag.(Unknown Source)
at com.google.maps.api.android.lib6.d.eu.a(Unknown Source)
at com.google.android.gms.maps.internal.j.onTransact(SourceFile:167)
at android.os.Binder.transact(Binder.java:380)
at com.google.android.gms.maps.internal.IGoogleMapDelegate$zza$zza.addMarker(Unknown Source)
at com.google.android.gms.maps.GoogleMap.addMarker(Unknown Source)
at xxx.xxxxx.app.ui.details.DetailActivity.lambda$initGoogleMaps$23(DetailActivity.java:387)
at xxx.xxxxx.app.ui.details.DetailActivity.access$lambda$10(DetailActivity.java)
at xxx.xxxxx.app.ui.details.DetailActivity$$Lambda$13.onMapReady(Unknown Source)
at com.google.android.gms.maps.SupportMapFragment$zza$1.zza(Unknown Source)
at com.google.android.gms.maps.internal.zzl$zza.onTransact(Unknown Source)
at android.os.Binder.transact(Binder.java:380)
at com.google.android.gms.maps.internal.av.a(SourceFile:82)
at com.google.maps.api.android.lib6.d.fa.run(Unknown Source)
at android.os.Handler.handleCallback(Handler.java:739)
at android.os.Handler.dispatchMessage(Handler.java:95)
at android.os.Looper.loop(Looper.java:135)
at android.app.ActivityThread.main(ActivityThread.java:5221)
at java.lang.reflect.Method.invoke(Native Method)
at java.lang.reflect.Method.invoke(Method.java:372)
at com.android.internal.os.ZygoteInit$MethodAndArgsCaller.run(ZygoteInit.java:899)
at com.android.internal.os.ZygoteInit.main(ZygoteInit.java:694)
Неважно, как я получаю изображение, пробовал создать растровое изображение с помощью BitmapFactory.fromResources и более поздних версий BitmapDescritpionFactory.fromBitmap, но результаты те же. Это просто не будет работать с векторным рисованием. Пробовал также разные векторы, но похоже, что сложность векторов здесь не проблема.

Кто-нибудь знает, как исправить этот сбой?

@edit

Похоже, что проблема была не в самом BitmapDescriptior, а в загрузке VectorDrawable, который возвращал неправильное растровое изображение. Однако решение, предложенное в ответе, по-прежнему подходит.

Подробнее здесь: https://stackoverflow.com/questions/335 ... descriptor
Ответить

Быстрый ответ

Изменение регистра текста: 
Смайлики
:) :( :oops: :roll: :wink: :muza: :clever: :sorry: :angel: :read: *x)
Ещё смайлики…
   
К этому ответу прикреплено по крайней мере одно вложение.

Если вы не хотите добавлять вложения, оставьте поля пустыми.

Максимально разрешённый размер вложения: 15 МБ.

Вернуться в «Android»