How to specify the size of the icon on the Marker in Google Maps V2 Android

前端 未结 5 650
温柔的废话
温柔的废话 2020-12-08 13:32

In may app i use Map from Google Maps V2 and in this map i am trying to add markers each Marker with an icon, but the marker is taking the size of the icon which is making t

相关标签:
5条回答
  • 2020-12-08 14:11

    Currently it's not possible to specify a marker size using MarkerOptions, so your only option is to rescale your Bitmap before setting it as your marker icon.

    Creating the scaled Bitmap:

    int height = 100;
    int width = 100;
    BitmapDrawable bitmapdraw = (BitmapDrawable)getResources().getDrawable(R.mipmap.marker);
    Bitmap b = bitmapdraw.getBitmap();
    Bitmap smallMarker = Bitmap.createScaledBitmap(b, width, height, false);
    

    Using smallMarker as the marker icon:

    map.addMarker(new MarkerOptions()
            .position(POSITION)
            .title("Your title")
            .icon(BitmapDescriptorFactory.fromBitmap(smallMarker))
    );
    
    0 讨论(0)
  • 2020-12-08 14:17
    Drawable circleDrawable = getResources().getDrawable(R.mipmap.primarysplitter);
    bitmapDescriptor = getMarkerIconFromDrawable(circleDrawable);
    
    private BitmapDescriptor getMarkerIconFromDrawable(Drawable drawable) {
        Canvas canvas = new Canvas();
        Bitmap bitmap = Bitmap.createBitmap(drawable.getIntrinsicWidth(), drawable.getIntrinsicHeight(), Bitmap.Config.ARGB_8888);
        canvas.setBitmap(bitmap);
        drawable.setBounds(0, 0, (int)getResources().getDimension(R.dimen._30sdp), (int)getResources().getDimension(R.dimen._30sdp));
        drawable.draw(canvas);
        return BitmapDescriptorFactory.fromBitmap(bitmap);
    }
    
    0 讨论(0)
  • 2020-12-08 14:19

    Kotlin version I used 0- 9 answer and used it with kotlin

    fun generateHomeMarker(context: Context): MarkerOptions {
        return MarkerOptions()
            .icon(BitmapDescriptorFactory.fromBitmap(generateSmallIcon(context)))
    }
    
    fun generateSmallIcon(context: Context): Bitmap {
        val height = 100
        val width = 100
        val bitmap = BitmapFactory.decodeResource(context.resources, R.drawable.logo)
        return Bitmap.createScaledBitmap(bitmap, width, height, false)
    }
    
    0 讨论(0)
  • 2020-12-08 14:22

    I think you can look for an answer on this question, where it already explained how to create a custom marker, with a given width and height by creating a dynamic bitmap.

    0 讨论(0)
  • 2020-12-08 14:27

    The accepted answer is outdated (Resources::getDrawable has been deprecated since API level 22). Here's an updated version:

    int height = 100;
    int width = 100;
    Bitmap b = BitmapFactory.decodeResource(getResources(), R.drawable. marker);
    Bitmap smallMarker = Bitmap.createScaledBitmap(b, width, height, false);
    BitmapDescriptor smallMarkerIcon = BitmapDescriptorFactory.fromBitmap(smallMarker);
    

    and then apply it in MarkerOption

    .icon(smallMarkerIcon)
    
    0 讨论(0)
提交回复
热议问题