i am trying to add Custom Layout as Marker and i am following this, but i am getting output as red patch which is the background of Parent layout!
if i don't put the background the marker does't even appears. Here is what i have tried so far, please help.
location_marker.xml
<LinearLayout xmlns:android="http://schemas.android.com/apk/res/android"
android:id="@+id/locationMarker"
android:layout_width="wrap_content"
android:background="@color/red"
android:layout_height="wrap_content"
android:layout_gravity="center"
android:layout_marginBottom="30dp"
android:gravity="center"
android:orientation="vertical">
<pgapp.com.rodionsolutions.pg.pgadmin.widgets.RegularTextView
android:id="@+id/locationMarkertext"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:background="@drawable/round_edittext"
android:gravity="center"
android:minWidth="100dp"
android:paddingLeft="2dp"
android:paddingRight="2dp"
android:textColor="@color/text_color"
android:text="Area Name" />
<ImageView
android:id="@+id/imageMarker"
android:layout_width="40dp"
android:layout_height="40dp"
android:src="@drawable/arrow_point_to_down"/>
and then in Java
mMap.addMarker(new MarkerOptions()
.position(latLng)
.title(pgDTOList.get(i).getPgName())
.snippet(pgDTOList.get(i).getAddress())
.icon(BitmapDescriptorFactory.fromBitmap(createDrawableFromView(this, marker))));
mMap.moveCamera(CameraUpdateFactory.newLatLngZoom(latLng, 20.0f));
this the method to create Layout as bitmap
public static Bitmap createDrawableFromView(Context context, View view) {
DisplayMetrics displayMetrics = new DisplayMetrics();
((Activity) context).getWindowManager().getDefaultDisplay().getMetrics(displayMetrics);
view.setLayoutParams(new LinearLayout.LayoutParams(LinearLayout.LayoutParams.WRAP_CONTENT, LinearLayout.LayoutParams.WRAP_CONTENT));
view.measure(displayMetrics.widthPixels, displayMetrics.heightPixels);
view.layout(0, 0, displayMetrics.widthPixels, displayMetrics.heightPixels);
view.buildDrawingCache();
Bitmap bitmap = Bitmap.createBitmap(view.getMeasuredWidth(), view.getMeasuredHeight(), Bitmap.Config.ARGB_8888);
Canvas canvas = new Canvas(bitmap);
view.draw(canvas);
return bitmap;
}
but the output is
public static Bitmap createDrawableFromView(Context context, View view) {
DisplayMetrics displayMetrics = new DisplayMetrics();
((Activity) context).getWindowManager().getDefaultDisplay().getMetrics(displayMetrics);
view.setLayoutParams(new ViewGroup.LayoutParams(ViewGroup.LayoutParams.WRAP_CONTENT, ViewGroup.LayoutParams.WRAP_CONTENT));
view.measure(displayMetrics.widthPixels, displayMetrics.heightPixels);
view.layout(0, 0, displayMetrics.widthPixels, displayMetrics.heightPixels);
view.buildDrawingCache();
Bitmap bitmap = Bitmap.createBitmap(view.getMeasuredWidth(), view.getMeasuredHeight(), Bitmap.Config.ARGB_8888);
Canvas canvas = new Canvas(bitmap);
view.draw(canvas);
return bitmap;
}
Add in google map like this
marker.icon(BitmapDescriptorFactory.fromBitmap(createDrawableFromView(getActivity(), markerView)));
Marker mar = mMap.addMarker(marker);