3

I have the following LayerList object

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>

And i wish to use as marker.

I am returning a MarkerOptions from my POJO method

 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;
     }

}

And in the MapFragment

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

I have no results: no icon on markers are drawn on the map.

The StackTrace is

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)

My questions: what i am doing wrong?, is there a wat to put a LayerList as icon without using context inside my POJO?

  • 1
    From memory, `BitmapDescriptorFactory.fromResource()` only works with `BitmapDrawable`, not any of the other `Drawable` flavours. Hence, in order to use your `LayerDrawable` as map marker, you'd have to render it into a bitmap first, and the use that to build the marker. – MH. Jun 17 '13 at 00:48
  • http://stackoverflow.com/questions/17675108/rotating-drawable-via-xml-not-working-with-marker-on-googlemap-v2 – MaciejGórski Sep 06 '13 at 06:49

1 Answers1

7

I had same problem. I helped this answer How to convert a Drawable to a Bitmap?

Fist step: Conver drawable to 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;
}

Step second, set bitmap in marker

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

It is active in my case.

Community
  • 1
  • 1
AndreyNik
  • 1,581
  • 2
  • 17
  • 24