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
));
mMap.setOnMarkerClickListener(
this
);
mMap.setOnMapClickListener(
this
);
setCustomMarkerView();
getSampleMarkerItems();
mClusterManager =
new
ClusterManager<>(
this
,mMap);
mMap.setOnCameraIdleListener(mClusterManager);
mMap.setOnMarkerClickListener(mClusterManager);
}
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
);
}
}
private
void
setCustomMarkerView()
{
marker_root_view = LayoutInflater.from(
this
).inflate(R.layout.marker,
null
);
tv_marker = (TextView) marker_root_view.findViewById(R.id.tv_marker);
}
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);
}
---아래 코드 생략----