Можно ли определить в папке «Макеты» (Android) XML-файл, где я укажу, как будет выглядеть мой указатель/маркер? Например, я хотел бы иметь изображение и TextView как маркер (а не всплывающее окно, а сам маркер).Маркер Google Maps, определенный в макете XML
Я использую Google Maps Library утилиты использовать Кластеры на Google Maps, но они просто есть примеры, как это сделать, используя обычный белый маркер с фоном (example)
Позволяет сказать, что я хочу точно, что делать они есть, кроме белой доски.
Вы знаете, как я могу это сделать?
Заранее спасибо.
EDIT:
Я пытаюсь объединить this tutorial с Maps Library Utility Google (кластеры). На данный момент у меня есть, но не работает:
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;
}
}
Вы получаете шанс решить эту проблему? если да, то как? Аналогичная проблема: http://stackoverflow.com/questions/25965799/xml-layout-to-map-marker – TheDevMan
HI, если вы решили эту проблему, любезно помогите мне. Я столкнулся с такой же проблемой. Я хочу отображать динамический контент, например номера на значках маркеров карты, с разными цветами. –
код фрагмента выглядит хорошо, но createDrawableFromView написано неправильно, вы не установили view.setDrawingCacheEnabled (true) http://developer.android.com/reference/android/view/View.html#setDrawingCacheEnabled(boolean) выглядит следующим образом http://stackoverflow.com/questions/2339429/android-view-getdrawingcache-returns-null-only-null/4618030#4618030 – horkavlna