Использование макета XML для маркера карты Google для Android
Я хочу использовать макет, а не рисовать для моегоmarker
Я использую с Google Maps Api 2 для приложения Android.
Как это:
Marker m = googleMap
.addMarker(new MarkerOptions()
.position(LOC)
.snippet(user)
.title(name)
.icon(BitmapDescriptorFactory.fromResource(R.layout.map_marker)));
Тем не менее, кажется, что это только для использования сdrawable
папка.
Я просто какое изображение с фоном, где я могу менять цвета в зависимости от типа маркера. Это макет, который я хочу использовать:
<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>
Довольно простой. Как я могу использовать это как маркер? (или хотя бы повторить конечный результат, к которому я иду?)
Документы говорят, что вы можете использовать это:
fromResource (int resourceId)
Поэтому я предположил, что макет может работать.
ОБНОВИТЬ:
Я взял концепцию из ответа ниже и переработал некоторые вещи; это все еще не работает; ошибок нет. Просто не покажу изображение.
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))));
// метод
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;
}