如何使用xml布局作为群集标记Android

时间:2016-08-29 12:54:51

标签: android google-maps android-layout android-studio android-maps-utils

我有一个问题,是否可以通过android map utils在google地图上设置多视图和textview作为群集标记的布局?如何?如果有人提供了一个很好的例子,这将是我想要做的一个例子:

enter image description here

感谢

1 个答案:

答案 0 :(得分: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;
}
好的,这很痛苦。