Nano Hash - криптовалюты, майнинг, программирование

LayerList как значок на маркере в картах Google v2

У меня есть следующий объект LayerList

R.drawable.flagged_pin

<?xml version="1.0" encoding="utf-8"?>
<layer-list xmlns:android="http://schemas.android.com/apk/res/android">
    <item android:drawable="@drawable/pin_marker" />
    <item android:drawable="@drawable/flag" />
</layer-list>

И я хочу использовать в качестве маркера.

Я возвращаю MarkerOptions из моего метода POJO

 public class Store {
     protected String name;
     protected LatLng latLng;
     protected String address;

     // ....

     public MarkerOptions getMarkerOptions() {
         MarkerOptions markerOptions = new MarkerOptions();
         markerOptions.position(this.latLng);
         markerOptions.title(this.name);
         markerOptions.snippet(this.address);

         int res = R.drawable.flagged_pin;
         markerOptions.icon(BitmapDescriptorFactory.fromResource(res));

         return markerOptions;
     }

}

И в MapFragment

for (Store store : stores) {
    marker = getMap().addMarker(store.getMarkerOptions());
}

У меня нет результатов: на карте не рисуются значки маркеров.

StackTrace — это

E/StoresMapFragment_(29590): A runtime exception was thrown while executing code in a runnable
E/StoresMapFragment_(29590): java.lang.NullPointerException
E/StoresMapFragment_(29590):    at maps.aj.bk.a(Unknown Source)
E/StoresMapFragment_(29590):    at maps.aj.bk.a(Unknown Source)
E/StoresMapFragment_(29590):    at maps.aj.al.a(Unknown Source)
E/StoresMapFragment_(29590):    at bcn.onTransact(SourceFile:167)
E/StoresMapFragment_(29590):    at android.os.Binder.transact(Binder.java:326)
E/StoresMapFragment_(29590):    at com.google.android.gms.maps.internal.IGoogleMapDelegate$a$a.addMarker(Unknown Source)
E/StoresMapFragment_(29590):    at com.google.android.gms.maps.GoogleMap.addMarker(Unknown Source)
E/StoresMapFragment_(29590):    at cl.paonde.fragment.map.StoresMapFragment.placeStores(StoresMapFragment.java:121)
E/StoresMapFragment_(29590):    at cl.paonde.fragment.map.StoresMapFragment_.access$0(StoresMapFragment_.java:1)
E/StoresMapFragment_(29590):    at cl.paonde.fragment.map.StoresMapFragment_$1.run(StoresMapFragment_.java:65)
E/StoresMapFragment_(29590):    at android.os.Handler.handleCallback(Handler.java:615)
E/StoresMapFragment_(29590):    at android.os.Handler.dispatchMessage(Handler.java:92)
E/StoresMapFragment_(29590):    at android.os.Looper.loop(Looper.java:137)
E/StoresMapFragment_(29590):    at android.app.ActivityThread.main(ActivityThread.java:4898)
E/StoresMapFragment_(29590):    at java.lang.reflect.Method.invokeNative(Native Method)
E/StoresMapFragment_(29590):    at java.lang.reflect.Method.invoke(Method.java:511)
E/StoresMapFragment_(29590):    at com.android.internal.os.ZygoteInit$MethodAndArgsCaller.run(ZygoteInit.java:1006)
E/StoresMapFragment_(29590):    at com.android.internal.os.ZygoteInit.main(ZygoteInit.java:773)
E/StoresMapFragment_(29590):    at dalvik.system.NativeStart.main(Native Method)

Мои вопросы: что я делаю неправильно? Есть ли способ поместить LayerList в качестве значка без использования контекста внутри моего POJO?


  • Насколько я помню, BitmapDescriptorFactory.fromResource() работает только с BitmapDrawable, но не с другими Drawable вкусами. Следовательно, чтобы использовать ваш LayerDrawable в качестве маркера карты, вам нужно сначала преобразовать его в растровое изображение, а затем использовать его для создания маркера. 17.06.2013
  • stackoverflow.com/questions/17675108/ 06.09.2013

Ответы:


1

У меня была такая же проблема. Я помог этому ответу Как преобразовать Drawable в Bitmap?

Первый шаг: преобразовать рисование в растровое изображение:

    public static Bitmap drawableToBitmap (Drawable drawable) {
    Bitmap bitmap = Bitmap.createBitmap(drawable.getIntrinsicWidth(),drawable.getIntrinsicHeight(), Config.ARGB_8888);
    Canvas canvas = new Canvas(bitmap); 
    drawable.setBounds(0, 0, canvas.getWidth(), canvas.getHeight());
    drawable.draw(canvas);
    return bitmap;
}

Шаг второй, установите растровое изображение в маркер

    Drawable drawable = getResources().getDrawable(R.drawable.markerlayer);
    Bitmap converBtm = drawableToBitmap (drawable);
    BitmapDescriptor drawableMarker = BitmapDescriptorFactory
                    .fromBitmap(converBtm);
    MarkerOptions markerOpt = new MarkerOptions();
    markerOpt.icon(drawableMarker);

В моем случае он активен.

15.09.2013
Новые материалы

Кластеризация: более глубокий взгляд
Кластеризация — это метод обучения без учителя, в котором мы пытаемся найти группы в наборе данных на основе некоторых известных или неизвестных свойств, которые могут существовать. Независимо от..

Как написать эффективное резюме
Предложения по дизайну и макету, чтобы представить себя профессионально Вам не позвонили на собеседование после того, как вы несколько раз подали заявку на работу своей мечты? У вас может..

Частный метод Python: улучшение инкапсуляции и безопасности
Введение Python — универсальный и мощный язык программирования, известный своей простотой и удобством использования. Одной из ключевых особенностей, отличающих Python от других языков, является..

Как я автоматизирую тестирование с помощью Jest
Шутка для победы, когда дело касается автоматизации тестирования Одной очень важной частью разработки программного обеспечения является автоматизация тестирования, поскольку она создает..

Работа с векторными символическими архитектурами, часть 4 (искусственный интеллект)
Hyperseed: неконтролируемое обучение с векторными символическими архитектурами (arXiv) Автор: Евгений Осипов , Сачин Кахавала , Диланта Хапутантри , Тимал Кемпития , Дасвин Де Сильва ,..

Понимание расстояния Вассерштейна: мощная метрика в машинном обучении
В обширной области машинного обучения часто возникает необходимость сравнивать и измерять различия между распределениями вероятностей. Традиционные метрики расстояния, такие как евклидово..

Обеспечение масштабируемости LLM: облачный анализ с помощью AWS Fargate и Copilot
В динамичной области искусственного интеллекта все большее распространение получают модели больших языков (LLM). Они жизненно важны для различных приложений, таких как интеллектуальные..