Logo Questions Linux Laravel Mysql Ubuntu Git Menu
 

Change marker size in Google Maps API v2

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?

like image 740
jesjimher Avatar asked Feb 13 '13 10:02

jesjimher


People also ask

How do I change the marker size on Google Maps?

url: 'http://chart.apis.google.com/chart?chst=d_map_pin_letter&chld=ccTLD|800000' , // This marker is 20 pixels wide by 32 pixels tall. size: new google.

How do you customize a marker in maps?

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.


1 Answers

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)))); 
like image 144
anubh Avatar answered Sep 18 '22 12:09

anubh