浜松のWEBシステム開発・スマートフォンアプリ開発・RTK-GNSS関連の開発はお任せください
株式会社シーポイントラボ
TEL:053-543-9889
営業時間:9:00~18:00(月〜金)
住所:静岡県浜松市中区富塚町1933-1 佐鳴湖パークタウンサウス2F

【androidjava】ClusterManagerでクラスターを作る

Android Utility Libraryの一つであるClusterManagerを使ってみました。

 

これを使って位置登録で地図にあふれ出たマーカーを

ズームアウトすると、周辺のマーカーを吸収してひとまとめに

して表示してくれます。

 

撮った写真を地図に逐次追加したいアプリに向いていますね。

 

追加方法は、まずClusterModelを作ります。

 

</pre>
public class ClusterModel implements ClusterItem {
private LatLng mPosition;
private String mTitle;
private String mSnippet;

public ClusterModel(double lat, double lng, String title, String snippet) {
mPosition = new LatLng(lat, lng);
mTitle = title;
mSnippet = snippet;
}

@Override
public LatLng getPosition() {
return mPosition;
}

@Override
public String getTitle() {
return mTitle;
}

@Override
public String getSnippet() {
return mSnippet;
}
}
<pre>

 

続いて表示したいアクティビティに次のように書きます。

 

</pre>
private ClusterManager<ClusterModel> mClusterManager;

@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.activity_report);
}

@Override
public void onMapReady(GoogleMap googleMap) {

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

for(int i =0; i < points.size(); i++) {
ClusterModel offsetItem = new ClusterModel(pointX[i], pointY[i],title[i],url[i]);
mClusterManager.addItem(offsetItem);
}
}

mMap.setInfoWindowAdapter(new GoogleMap.InfoWindowAdapter() {
@Override
public View getInfoWindow(Marker marker) {
return null;
}
@Override
public View getInfoContents(Marker marker) {
View view = getLayoutInflater().inflate(R.layout.info_window, null);
TextView title = (TextView)view.findViewById(R.id.info_title);
title.setText(marker.getTitle());
ImageView imageView = (ImageView) view.findViewById(R.id.info_image);
Picasso.with(ReportActivity.this)
.load(marker.getSnippet())
.placeholder(R.drawable.sample)
.resize(200,200)
.into(imageView,new MarkerCallback(marker,marker.getSnippet(),imageView));

return view;
}
<pre>

 

ClusterModelインスタンスで定義した緯度経度・タイトル・urlを

順に出していきたいためforで回しています。

 

画像を出したい時はまたpicassoで読み込んでいきます。

 

複雑になってしまいましたがこれで晴れてクラスターを使えるように

なりました。

 

  • この記事いいね! (0)