Skip to content

Commit 9f90ab3

Browse files
mlcrborn
authored andcommitted
permit android vector drawables to be used as markers (react-native-maps#2111)
1 parent 6a00237 commit 9f90ab3

File tree

1 file changed

+10
-1
lines changed

1 file changed

+10
-1
lines changed

lib/android/src/main/java/com/airbnb/android/react/maps/AirMapMarker.java

+10-1
Original file line numberDiff line numberDiff line change
@@ -5,6 +5,7 @@
55
import android.graphics.BitmapFactory;
66
import android.graphics.Canvas;
77
import android.graphics.drawable.Animatable;
8+
import android.graphics.drawable.Drawable;
89
import android.net.Uri;
910
import android.view.View;
1011
import android.widget.LinearLayout;
@@ -283,7 +284,15 @@ public void setImage(String uri) {
283284
} else {
284285
iconBitmapDescriptor = getBitmapDescriptorByName(uri);
285286
if (iconBitmapDescriptor != null) {
286-
iconBitmap = BitmapFactory.decodeResource(getResources(), getDrawableResourceByName(uri));
287+
int drawableId = getDrawableResourceByName(uri);
288+
iconBitmap = BitmapFactory.decodeResource(getResources(), drawableId);
289+
if (iconBitmap == null) { // VectorDrawable or similar
290+
Drawable drawable = getResources().getDrawable(drawableId);
291+
iconBitmap = Bitmap.createBitmap(drawable.getIntrinsicWidth(), drawable.getIntrinsicHeight(), Bitmap.Config.ARGB_8888);
292+
drawable.setBounds(0, 0, drawable.getIntrinsicWidth(), drawable.getIntrinsicHeight());
293+
Canvas canvas = new Canvas(iconBitmap);
294+
drawable.draw(canvas);
295+
}
287296
}
288297
update();
289298
}

0 commit comments

Comments
 (0)