-1

У меня вопрос: Можно ли установить макет с несколькими изображениями и текстовыми изображениями в качестве маркера кластера на карте google с помощью android map utils? и как? если кто-то обеспечить хороший пример, было бы здорово это пример того, что я хочу сделать:Как использовать xml layout как кластерный маркер Android

enter image description here

благодаря

ответ

1

Я не знаю, если есть более простой способ, чем то, что я использовал это был год, этот метод занимает много времени, если набор данных является большим, поэтому используйте его на небольшом наборе данных или поговорите с дизайнером для других опций.

вы можете создать макет с тем, что вы хотите получить растровое изображение этого макета, это добавить растровое изображение в качестве маркера к карте, так как маркер добавления принимает только изображения.

первый шаг надуть и установить данные в макете

View marker = ((LayoutInflater) getActivity() 
       .getSystemService(Context.LAYOUT_INFLATER_SERVICE)) 
       .inflate(R.layout.marker_layout, null); 

второй получить растровое изображение с этой точки зрения

Bitmap bitmap = createDrawableFromView(
           getActivity(), marker); 

третий добавить растровое изображение в качестве маркера

MarkerOptions mo = new MarkerOptions().position(
            new LatLng(lat, lng)) 
            // .title(address) 
            .snippet(i + "") 
            .icon(BitmapDescriptorFactory 
              .fromBitmap(bitmap)); 
          Marker customMarker = googleMap.addMarker(mo); 

это как получить растровое изображение

public static Bitmap createDrawableFromView(Context context, View view) { 
    DisplayMetrics displayMetrics = new DisplayMetrics(); 
    if (context != null) { 
     ((Activity) context).getWindowManager().getDefaultDisplay() 
       .getMetrics(displayMetrics); 
     view.setLayoutParams(new LayoutParams(LayoutParams.WRAP_CONTENT, 
       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; 
    } 
    return null; 
} 

goodluck с тем, что было много боли.

+1

спасибо, что я собираюсь дать ему попробовать, этот код предназначен для одного маркера, а не кластера, но я пытаюсь реализовать внутри своих кодов, но еще один вопрос: я должен установить данные перед использованием createDrawableFromView, а также это можно использовать это внутри конструктора onBeforeClusterRendered? – Blacksword

+0

да, вы должны установить все данные, прежде чем создавать растровое изображение , если изображение URL-адреса загрузится сначала, а затем создайте маркер, который я не использовал onBeforeClusterRendered, поэтому я не знаю, попробуйте. –

+0

это сработало для меня спасибо Hala – Blacksword

 Смежные вопросы

  • Нет связанных вопросов^_^