Change marker size in Google Maps API v2

jesjimher picture jesjimher · Feb 13, 2013 · Viewed 63.9k times · Source

I'm trying to port my app to the brand new Google Maps API v2, but can't find how to change the size of the marker (some of my markers are smaller than default).

In v1, I used a Drawable which I scaled with setBounds() before adding it to the map.

But now, in v2, I can't use a Drawable. I've to use MarkerOptions().icon(), which takes just a BitmapDescriptor (generated with a BitmapDescriptorFactory).

Looking at the reference, there doesn't seem to be any support for setting or changing the BitmapDescriptor size.

So, have I missed something, or is it just plain impossible to set the size for custom markers in this API version?

Answer

anubh picture anubh · Aug 24, 2015

You can first convert it into Bitmap and change its size and then use that bitmap in as a custom marker. For example I first created a method which accepts name of your image file in drawable folder, and width and height of marker you want to set.

public Bitmap resizeMapIcons(String iconName,int width, int height){
    Bitmap imageBitmap = BitmapFactory.decodeResource(getResources(),getResources().getIdentifier(iconName, "drawable", getPackageName()));
    Bitmap resizedBitmap = Bitmap.createScaledBitmap(imageBitmap, width, height, false);
    return resizedBitmap;
}

Then call like this in setUpMap() method to create a new marker of required size.

googleMap.addMarker(new MarkerOptions()
            .title("New Marker")
            .snippet("Check out this place.")
            .position(chelsea).icon(BitmapDescriptorFactory.fromBitmap(resizeMapIcons("image_name",100,100))));