마스터Q&A 안드로이드는 안드로이드 개발자들의 질문과 답변을 위한 지식 커뮤니티 사이트입니다. 안드로이드펍에서 운영하고 있습니다. [사용법, 운영진]

구글맵 클러스터링 마커 생성이 제대로 안되네요..

0 추천

구글맵에 마커를 생성하고 클러스터링 작업을했습니다.

그리고 ClusterManager.setRenderer를 사용하여 클러스터 마커를 커스텀했습니다.

클러스터링 하기전에는 잘만 생성되던 마커가 클러스터링 한 후에는 바로 보여지지가 않습니다/

처음 구글맵 화면이 보여진뒤에는, 제가 만든 수십개의 마커가 아예 보여지지가 않습니다. 그러나 지도를 축소하면 그때서야 한곳으로 모아진 클러스터 마커는 생깁니다..

그리고나서 그 후에 다시 지도를 확대하면 마커가 보입니다..

왜 처음부터 마커가 보이지 않는 걸까요?

아래 코드는 clusterManager.setRenderer(new MyClusterRenderer(getActivity(), googleMap, clusterManager)); 하기위해 만든 MyClusterRenderer 함수입니다..

 

public class MyClusterRenderer extends DefaultClusterRenderer<MarkerItem> {

        private final IconGenerator mClusterIconGenerator = new IconGenerator(getActivity().getApplicationContext());

        public MyClusterRenderer(Context context, GoogleMap map, ClusterManager<MarkerItem> clusterManager) {
            super(context, map, clusterManager);
        }

        @Override
        protected void onBeforeClusterItemRendered(MarkerItem markerItem, MarkerOptions markerOptions) {
            super.onBeforeClusterItemRendered(markerItem, markerOptions);

            LatLng position = new LatLng(markerItem.getLat(), markerItem.getLon());
            String spotname = markerItem.getSpotname();

            tv_marker.setText(spotname);
            tv_marker.setBackgroundResource(R.drawable.ic_marker_phone);
            tv_marker.setTextColor(Color.BLACK);

            markerOptions.title(spotname);
            markerOptions.position(position);
            markerOptions.icon(BitmapDescriptorFactory.fromBitmap(createDrawableFromView(getActivity(), marker_root_view)));

        }

        @Override
        protected void onClusterItemRendered(MarkerItem markerItem, Marker marker) {
            super.onClusterItemRendered(markerItem, marker);
        }

        @Override
        protected void onBeforeClusterRendered(Cluster<MarkerItem> cluster, MarkerOptions markerOptions){

            final Drawable clusterIcon = getResources().getDrawable(R.drawable.icon);
            clusterIcon.setColorFilter(getResources().getColor(android.R.color.holo_blue_light), PorterDuff.Mode.SRC_ATOP);

            mClusterIconGenerator.setBackground(clusterIcon);

            //    modify padding for one or two digit numbers
            if (cluster.getSize() < 10) {
                mClusterIconGenerator.setContentPadding(30, 10, 0, 0);
            }
            else {
                mClusterIconGenerator.setContentPadding(20, 10, 0, 0);
            }

            Bitmap icon = mClusterIconGenerator.makeIcon(String.valueOf(cluster.getSize()));
            markerOptions.icon(BitmapDescriptorFactory.fromBitmap(icon));

        }
    }

 

똑돌이 (530 포인트) 님이 2016년 12월 14일 질문

1개의 답변

0 추천
before에서는 옵션만 주고 rendered에서 그려줘야 나올거에요
status (1,410 포인트) 님이 2017년 1월 23일 답변
...