그동안
30
2019-04-15 17:57:00 작성 2019-04-15 17:57:40 수정됨
0
48

안드로이드 마커 클러스터링 관련해서...


안드로이드 입문한지 얼마 안됐는데요;;

마커 클러스터링 때문에 일주일째 헤메고 있어요ㅠㅠ

복수개 마커 표시하는 것 완료하고, 아래 google document 보면서 해봤는데 도저히 안되겠네요. 

https://developers.google.com/maps/documentation/android-sdk/utility/marker-clustering 


63번 줄에 문제가 있는듯 한데, 한수 가

public class CitymapActivity extends FragmentActivity implements OnMapReadyCallback, GoogleMap.OnMarkerClickListener
{
    //권한 체크 요청 코드 정의
    public static final int REQUEST_CODE_PERMISSIONS = 1000;

        Marker selectedMarker;
        View marker_root_view;
        TextView tv_marker;
        TextView kk_marker;  ///////////////////////////////////
        private GoogleMap mMap;
        private ClusterManager<MyItem> mClusterManager;
        private FusedLocationProviderClient mFusedLocationClient;   //위치 정보 얻는 객체


    @Override
    protected void onCreate(Bundle savedInstanceState)
    {
        super.onCreate(savedInstanceState);
        setContentView(R.layout.activity_citymap);
        SupportMapFragment mapFragment = (SupportMapFragment) getSupportFragmentManager() .findFragmentById(R.id.map);
        mapFragment.getMapAsync(this);
        mFusedLocationClient = LocationServices.getFusedLocationProviderClient(this);
    }


    //onMapReady는 구글맵 로드시 초기 셋팅을 말함
    @Override
    public void onMapReady(GoogleMap googleMap)
    {
        mMap = googleMap;

        mMap.moveCamera(CameraUpdateFactory.newLatLngZoom(new LatLng(16.068265, 108.224270), 12));  //camera는 사용자에게 처음에 보여줄 위치를 말함
        mMap.setOnMarkerClickListener(this);

        setCustomMarkerView();
        getSampleMarkerItems();

        mClusterManager = new ClusterManager<>(this,mMap);
        mMap.setOnCameraIdleListener(mClusterManager);
        mMap.setOnMarkerClickListener(mClusterManager);
    }


    //표시할 마커 좌표 정보. https://gun0912.tistory.com/57 참고
    private void getSampleMarkerItems()
    {
        ArrayList<MarkerItem> sampleList = new ArrayList();

        sampleList.add(new MarkerItem(16.069925, 108.224912, "하이랜드 커피", "베트남의 스타벅스") );
        sampleList.add(new MarkerItem(16.069022, 108.224836, "콩카페-한강 강변점", "사회주의 컨셉 카페") );
        sampleList.add(new MarkerItem(16.068710, 108.224601, "해피 브래드", "달콤한 반피 카페") );
        sampleList.add(new MarkerItem(16.068265, 108.224270, "한 시장", "다낭에서 가장 오래된 재래시장") );
        sampleList.add(new MarkerItem(16.067005, 108.224711, "워터 프런트", "한강의 야경을 바라보며 식사") );
        sampleList.add(new MarkerItem(16.066683, 108.223016, "다낭 대성당", "분홍빛 외관의 아름다운 성당") );
        sampleList.add(new MarkerItem(16.060482, 108.223341, "참조각 박물관", "찬란했던 참파 왕국의 모습") );
        sampleList.add(new MarkerItem(16.061146, 108.227055, "용 다리", "다낭의 랜드마크") );
        sampleList.add(new MarkerItem(37.513304, 127.100123, "잠실역", "잠실 지하철역") );
        sampleList.add(new MarkerItem(37.487644, 127.126399, "문정동 우리집", "우리집") );

        for (MarkerItem markerItem : sampleList)
        {
            addMarker(markerItem, false);
            mClusterManager.addItem();
        }
    }


    //marker.xml(커스텀마커)을 불러옴. https://gun0912.tistory.com/57 참고
    private void setCustomMarkerView()
    {
        marker_root_view = LayoutInflater.from(this).inflate(R.layout.marker, null);  //maker.xml을 불러옴
        tv_marker = (TextView) marker_root_view.findViewById(R.id.tv_marker);
        kk_marker = (TextView) marker_root_view.findViewById(R.id.kk_marker);
    }


    //실제 마커를 추가하는 addMarker()함수를 만듬. https://gun0912.tistory.com/57 참고
    private Marker addMarker(MarkerItem markerItem, boolean isSelectedMarker)
    {
        LatLng position = new LatLng(markerItem.getLat(), markerItem.getLon());
        String title = markerItem.getTitle();
        String snippet = markerItem.getSnippet();

        tv_marker.setText(title);
        kk_marker.setText(snippet);

        tv_marker.setTextColor(Color.WHITE);
        kk_marker.setTextColor(Color.BLACK);


        //마커 옵션
        MarkerOptions markerOptions = new MarkerOptions();
        markerOptions.title(title);         //제목
        markerOptions.snippet(snippet);     //내용
        markerOptions.position(position);   //위치
        markerOptions.icon(BitmapDescriptorFactory.fromBitmap(createDrawableFromView(this, marker_root_view)));

        return mMap.addMarker(markerOptions);
    }

르쳐 주시면 감사하겠습니다~~

0
0
  • 답변 0

  • 로그인을 하시면 답변을 등록할 수 있습니다.