2017-08-06 18 views
1

カスタムマーカーアイコンはGoogleマップにできますか? アイコンビットマップを変更するだけでいいのですが(私はそれをやる方法は分かります) xmlレイアウト(1つのimageviewとtextviewを持つ)のようにアイコンを変更したいのですが、このxmlを膨らませたい(カスタム情報ウィンドウのように)。しかし、私はそれをマーカーアイコンにしたいので、画像とテキストをコーディングで設定することができます。 情報ウィンドウが必要なのではなく、マーカーにします。カスタムマーカーアイコンGoogleマップandroid

答えて

0

layourを作成し、そのレイアウトを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])))); 
+0

このようにすれば、テキストと画像をプログラムで設定することはできません –

+0

はい、任意のビューをあなたのレイアウトだけでなく、テキストや画像。 –

+0

クラッシュログを追加します。 –

関連する問題