Is it possible to define in Layouts folder (Android) an XML file where i specify how my pointer/marker will look like? For example, i would like to have an image and a TextView as Marker (not the popup, but the marker itself).
I have been using Google Maps Utility Library to use Clusters on Google Maps, but they just have examples how to do it using the normal white marker with background (example)
Lets say that i want exactly what do they have, except the white board around.
Do you know how can i accomplish this?
Thanks in advance.
EDIT:
I'm trying to combine this tutorial with Google Maps Utility Library (Clusters). For now i have this, but is not working:
custom_cluster_marker_layout.xml
<?xml version="1.0" encoding="utf-8"?>
<RelativeLayout xmlns:android="http://schemas.android.com/apk/res/android"
android:layout_width="wrap_content"
android:layout_height="wrap_content" >
<ImageView
android:id="@+id/image"
android:layout_width="55dp"
android:layout_height="65dp"
android:src="@drawable/cluster" />
<TextView
android:id="@+id/num_txt"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:layout_marginLeft="19dp"
android:layout_marginTop="10dp"
android:gravity="center"
android:text="0"
android:textColor="#ce8223"
android:textSize="25dp"
android:textStyle="bold" />
</RelativeLayout>
MeterRender.java
private class MeterRenderer extends DefaultClusterRenderer<MyMeter> {
private TextView mClusterTextView;
public MeterRenderer() {
super(c, map, mClusterManager);
View custom_cluster_view = ((LayoutInflater) c.getSystemService(Context.LAYOUT_INFLATER_SERVICE)).inflate(R.layout.custom_cluster_marker_layout, null);
mClusterTextView = (TextView) custom_cluster_view.findViewById(R.id.num_txt);
}
@Override
protected void onBeforeClusterItemRendered(MyMeter meter, MarkerOptions markerOptions) {
markerOptions.icon(BitmapDescriptorFactory
.fromPath(createBillboardTexture("a", "123")));
}
@Override
protected void onBeforeClusterRendered(Cluster<MyMeter> cluster, MarkerOptions markerOptions) {
View custom_cluster_view = ((LayoutInflater) c.getSystemService(Context.LAYOUT_INFLATER_SERVICE)).inflate(R.layout.custom_cluster_marker_layout, null);
mClusterTextView = (TextView) custom_cluster_view.findViewById(R.id.num_txt);
mClusterTextView.setText(cluster.getSize());
markerOptions.icon(BitmapDescriptorFactory.fromBitmap(createDrawableFromView(c, custom_cluster_view)));
}
public Bitmap createDrawableFromView(Context context, View view) {
DisplayMetrics displayMetrics = new DisplayMetrics();
((Activity) context).getWindowManager().getDefaultDisplay().getMetrics(displayMetrics);
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;
}
}
You probably already have added Marker
in your map, so try use Marker
instead of MarkerOptions
@Override
protected void onBeforeClusterItemRendered(MyMeter meter, Marker marker) {
marker.setIcon(BitmapDescriptorFactory
.fromPath(createBillboardTexture("a", "123")));
}
@Override
protected void onBeforeClusterRendered(Cluster<MyMeter> cluster, Marker marker) {
View custom_cluster_view = ((LayoutInflater) c.getSystemService(Context.LAYOUT_INFLATER_SERVICE)).inflate(R.layout.custom_cluster_marker_layout, null);
mClusterTextView = (TextView) custom_cluster_view.findViewById(R.id.num_txt);
mClusterTextView.setText(cluster.getSize());
marker.setIcon(BitmapDescriptorFactory.fromBitmap(createDrawableFromView(c, custom_cluster_view)));
}
If you love us? You can donate to us via Paypal or buy me a coffee so we can maintain and grow! Thank you!
Donate Us With