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?
For adding a custom marker to Google Maps navigate to the app > res > drawable > Right-Click on it > New > Vector Assets and select the icon which we have to show on your Map. You can change the color according to our requirements. After creating this icon now we will move towards adding this marker to our Map.
The Google Maps API has a method that allows you to construct polygons from coordinates and add them to your map.
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>
If you love us? You can donate to us via Paypal or buy me a coffee so we can maintain and grow! Thank you!
Donate Us With