自定义标记图标谷歌地图android

时间:2017-08-06 08:34:09

标签: java android

我们可以自定义标记图标谷歌地图吗? 我不想只是简单地改变图标位图(我知道该怎么做) 我想像我有一个xml布局(有一个imageview和textview)的方式更改图标,我想膨胀这个xml(如自定义信息窗口)。但我想把它作为标记图标,所以我可以通过编码设置图像和文本 请注意,我不想要一个信息窗口,我希望它是一个标记

1 个答案:

答案 0 :(得分:0)

您可以创建layour并将该布局转换为Drawable,然后将该drawable添加到标记的图标中。

您可以像这样创建布局

<?xml version="1.0" encoding="utf-8"?>
<LinearLayout xmlns:android="http://schemas.android.com/apk/res/android"
              android:layout_width="match_parent"
              android:layout_height="wrap_content"
              android:orientation="vertical">

    <ImageView
        android:layout_width="wrap_content"
        android:layout_height="wrap_content"
        android:src="@drawable/ic_action_name"
    "/>

    <TextView
        android:layout_width="match_parent"
        android:layout_height="wrap_content"
        android:layout_marginLeft="20dp"
        android:layout_marginRight="20dp"
        android:layout_marginTop="2dp"
        android:text="Name"
        android:textSize="16sp"/>

</LinearLayout>

下面的方法将从布局中提供您的位图

private Bitmap getBitmapFromLayout(int layout) {

    LayoutInflater layoutInflater = (LayoutInflater) getSystemService(Context.LAYOUT_INFLATER_SERVICE);
    View view = layoutInflater.inflate(layout, null);

    view.measure(MeasureSpec.makeMeasureSpec(0, MeasureSpec.UNSPECIFIED), 
        MeasureSpec.makeMeasureSpec(0, MeasureSpec.UNSPECIFIED));
    view.layout(0, 0, v.getMeasuredWidth(), v.getMeasuredHeight());

    view.buildDrawingCache();

    Bitmap bitmap = Bitmap.createBitmap(view.getMeasuredWidth(), view.getMeasuredHeight(),
            Bitmap.Config.ARGB_8888);

    Canvas canvas = new Canvas(bitmap);
    canvas.drawColor(Color.WHITE, PorterDuff.Mode.SRC_IN);

    Drawable drawable = view.getBackground();
    if (drawable != null)
        drawable.draw(canvas);

    view.draw(canvas);

    return bitmap;
}

您可以像这样添加地图标记图标中的位图

mMap.addMarker(new MarkerOptions().icon(BitmapDescriptorFactory.fromBitmap(getBitMapFromLayout([your layout id]))));