Android-Maps-Utilsにはマーカークラスタリングユーティリティがあります。以下は手順です:
compile 'com.google.maps.android:android-maps-utils:0.4.3'
をbuild.gradleに追加してください。
はあなたのマニフェスト
<uses-permission android:name="your.package.permission.MAPS_RECEIVE"/>
<uses-permission android:name="android.permission.INTERNET" />
<uses-permission android:name="android.permission.ACCESS_NETWORK_STATE" />
<uses-permission android:name="android.permission.WRITE_EXTERNAL_STORAGE" />
<uses-permission android:name="com.google.android.providers.gsf.permission.READ_GSERVICES" />
<uses-permission android:name="android.permission.ACCESS_COARSE_LOCATION" />
<uses-permission android:name="android.permission.ACCESS_FINE_LOCATION" />
の権限の下に追加のLatLngオブジェクトとしてマーカーのあなたの位置を与えるクラスを作成します。
パブリッククラスMarkerItemはClusterItem {
private final LatLng mPosition;
public MarkerItem (double lat, double lon) {
mPosition = new LatLng(lat, lon);
}
@Override
public LatLng getPosition() {
return mPosition;
}
FragmentActivityがOnMapReadyCallbackを{
private GoogleMap mGoogleMap;
// Declare a variable for the cluster manager.
ClusterManager<MarkerItem> mClusterManager;
@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.activity_main);
SupportMapFragment supportMapFragment =
(SupportMapFragment) getSupportFragmentManager().findFragmentById(R.id.map);
supportMapFragment.getMapAsync(this);
}
@Override
public void onMapReady(GoogleMap googleMap) {
mGoogleMap = googleMap;
setUpClusterer();
}
private void setUpClusterer() {
// Position the map.
mGoogleMap.moveCamera(CameraUpdateFactory.newLatLngZoom(new LatLng(51.503186, -0.126446), 10));
// Initialize the manager with the context and the map.
// (Activity extends context, so we can pass 'this' in the constructor.)
mClusterManager = new ClusterManager<>(this, mGoogleMap);
// Point the map's listeners at the listeners implemented by the cluster
// manager.
mGoogleMap.setOnCameraChangeListener(mClusterManager);
mGoogleMap.setOnMarkerClickListener(mClusterManager);
// Add cluster items (markers) to the cluster manager.
addItems();
}
/**
* Generate dummy coordinates
*/
private void addItems() {
// Set some lat/lng coordinates to start with.
double lat = 51.5145160;
double lng = -0.1270060;
// Add ten cluster items in close proximity, for purposes of this example.
for (int i = 0; i < 10; i++) {
double offset = i/60d;
lat = lat + offset;
lng = lng + offset;
MarkerItem offsetItem = new MarkerItem(lat, lng);
mClusterManager.addItem(offsetItem);
}
}
このライブラリに自動的に実装し
パブリッククラスMainActivityが延びて/あなたのアクティビティ内のフラグメントをClusterManagerの追加を実装しますハンドルt彼はクラスタリング部分。
こちらがお役に立てば幸いです。詳細については
:this link
出典
2016-05-24 09:39:05
SKP
に従ってください、あなたは私が言及したライブラリの文書化を経て、それが参考に思わ@skadoosh答え – Bharatesh
に記載されたライブラリを確認しました。実装が完了したら、私は確認します。 – SKP