안드로이드 입문한지 얼마 안됐는데요;;
마커 클러스터링 때문에 일주일째 헤메고 있어요ㅠㅠ
복수개 마커 표시하는 것 완료하고, 아래 google document 보면서 해봤는데 도저히 안되겠네요.
https://developers.google.com/maps/documentation/android-sdk/utility/marker-clustering
코드 어떤 부분이 문제인지 한수 가르쳐 주시면 감사하겠습니다
public class CitymapActivity extends FragmentActivity implements OnMapReadyCallback, GoogleMap.OnMarkerClickListener, GoogleMap.OnMapClickListener
{
Marker selectedMarker;
View marker_root_view;
TextView tv_marker;
private GoogleMap mMap;
private ClusterManager<MyItem> mClusterManager;
@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);
}
//마커 위치 표시
@Override
public void onMapReady(GoogleMap googleMap)
{
mMap = googleMap;
mMap.moveCamera(CameraUpdateFactory.newLatLngZoom(new LatLng(16.068265, 108.224270), 12)); //camera는 사용자에게 처음에 보여줄 위치를 말함
mMap.setOnMarkerClickListener(this);
mMap.setOnMapClickListener(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.487644, 127.126399, "문정동 우리집"));
for (MarkerItem markerItem : sampleList)
{
addMarker(markerItem, false);
}
}
//마커 정보로부터 하나씩 마커 추가
//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);
}
//실제 마커를 추가하는 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();
tv_marker.setText(title);
tv_marker.setBackgroundResource(R.drawable.ic_marker_phone);
tv_marker.setTextColor(Color.WHITE);
MarkerOptions markerOptions = new MarkerOptions();
markerOptions.title(title);
markerOptions.position(position);
markerOptions.icon(BitmapDescriptorFactory.fromBitmap(createDrawableFromView(this, marker_root_view)));
return mMap.addMarker(markerOptions);
}
---아래 코드 생략----