Verwenden eines XML-Layouts für einen Google Map Marker für Android

Ich möchte ein Layout verwenden und kein Zeichen für meinemarker Ich verwende Google Maps Api 2 für eine Android-App.

So was:

  Marker m = googleMap
                        .addMarker(new MarkerOptions()
                                .position(LOC)
                                .snippet(user)
                                .title(name)
                                .icon(BitmapDescriptorFactory.fromResource(R.layout.map_marker)));

Es scheint jedoch, dass dies nur für die Verwendung von ausgelegt istdrawable Mappe.

Ich habe einfach was für ein Bild mit einem Hintergrund, wo ich Farben basierend auf Markertyp ändern kann. Dies ist das Layout, das ich verwenden möchte:

<LinearLayout xmlns:android="http://schemas.android.com/apk/res/android"
    android:orientation="vertical"
    android:layout_width="50dp"
    android:layout_height="50dp"
    android:background="#222"
    android:id="@+id/llMarker">

    <ImageView
        android:id="@+id/ivMarker"
        android:layout_marginTop="5dp"
        android:layout_width="40dp"
        android:layout_height="40dp" />

</LinearLayout>

Ziemlich einfach. Wie kann ich das als Marker verwenden? (oder zumindest das Endergebnis wiederholen, das ich anstrebe?)

In den Dokumenten heißt es, dass Sie dies verwenden können:

fromResource (int resourceId)

Also nahm ich an, dass ein Layout funktionieren könnte.

AKTUALISIEREN:

Ich habe das Konzept der Antwort unten entnommen und einige Dinge überarbeitet. das funktioniert immer noch nicht; keine Fehler. Nur wird kein Bild angezeigt.

        LayoutInflater inflater = (LayoutInflater) getActivity()
                .getSystemService(Context.LAYOUT_INFLATER_SERVICE);
        View v = inflater.inflate(R.layout.map_marker, null);

        m = googleMap
                .addMarker(new MarkerOptions()
                        .position(LOC)
                        .snippet(user)
                        .title(name)
                        .icon(BitmapDescriptorFactory.fromBitmap(loadBitmapFromView(v))));

// Methode

  public static Bitmap loadBitmapFromView(View v) {

        if (v.getMeasuredHeight() <= 0) {
            v.measure(WindowManager.LayoutParams.WRAP_CONTENT, WindowManager.LayoutParams.WRAP_CONTENT);
            Bitmap b = Bitmap.createBitmap(v.getMeasuredWidth(), v.getMeasuredHeight(), Bitmap.Config.ARGB_8888);
            Canvas c = new Canvas(b);
            v.layout(0, 0, v.getMeasuredWidth(), v.getMeasuredHeight());
            v.draw(c);
            return b;
        }
        return null;
    }

Antworten auf die Frage(4)

Ihre Antwort auf die Frage