I've been trying to add a shape drawable as the marker icon for a marker I want to add on the map.
shape looks like this (res/drawable/blue_circle.xml):
<?xml version="1.0" encoding="utf-8"?>
<shape xmlns:android="http://schemas.android.com/apk/res/android"
android:shape="oval" >
<size
android:width="15dp"
android:height="15dp" />
<solid
android:color="@color/Blue" />
</shape>
and I try to add the marker like this:
markerOptions.icon(BitmapDescriptorFactory.fromResource(R.drawable.blue_circle));
Apparently I get a NullPointer exception.
Must the marker icon be a bitmap? Am I allowed to add shapes drawables as marker icons? And if yes what am I doing wrong?
Create a drawable for your marker (res/drawable/map_dot_red.xml):
<?xml version="1.0" encoding="utf-8"?>
<shape xmlns:android="http://schemas.android.com/apk/res/android"
android:shape="oval" >
<gradient
android:angle="90"
android:endColor="#f58383"
android:startColor="#ee6464" />
<stroke
android:width="1dp"
android:color="#a13939" />
</shape>
Create a bitmap from the drawable:
int px = getResources().getDimensionPixelSize(R.dimen.map_dot_marker_size);
mDotMarkerBitmap = Bitmap.createBitmap(px, px, Bitmap.Config.ARGB_8888);
Canvas canvas = new Canvas(mDotMarkerBitmap);
Drawable shape = getResources().getDrawable(R.drawable.map_dot_red);
shape.setBounds(0, 0, mDotMarkerBitmap.getWidth(), mDotMarkerBitmap.getHeight());
shape.draw(canvas);
Create your marker, using the bitmap:
Marker marker = mMap.addMarker(new MarkerOptions()
.position(point)
.anchor(.5f, .5f)
.icon(BitmapDescriptorFactory.fromBitmap(mDotMarkerBitmap)));
Set the size of your marker in dimens (res/values/dimens.xml):
<resources>
<dimen name="map_dot_marker_size">12dp</dimen>
</resources>