Я пытаюсь кластеризовать маркеры, которые пользователи вводят наMapLongClick, но я не могу понять, как это понять. Все обучаемые/примеры, которые я нашел, показывают, как кластер для объектов, которые находятся в заданном LatLng. Это не будет работать для того, что я хочу сделать, потому что точка не известна, пока пользователь не помещает маркер. Например, если пользователи вводят двадцать маркеров при использовании приложения в определенном месте на уровне масштабирования 7, я хочу, чтобы они могли группировать их на основе расстояния или сетки, или же, когда они приближаются к уровню 6. Я пользуюсь Google Maps с Android Studio. Кто-нибудь может помочь? Я некоторое время работаю над этим ... Вот код, который у меня есть до сих пор. Спасибо!Кластеризация пользовательских маркеров ввода (Google Maps x Android Studio)
public class BasicMapDemoActivity extends AppCompatActivity implements
OnMapReadyCallback {
GoogleMap mMap;
private UiSettings mUiSettings;
@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.basic_demo);
SupportMapFragment mapFragment =
(SupportMapFragment) getSupportFragmentManager().findFragmentById(R.id.map);
mapFragment.getMapAsync(this);
}
@Override
public boolean onCreateOptionsMenu(Menu menu) {
// Inflate the menu; this adds items to the action bar if it is present.
getMenuInflater().inflate(R.menu.activity_main, menu);
return true;
}
@Override
public boolean onOptionsItemSelected(MenuItem item) {
// Handle item selection
if (item.getItemId() == R.id.menu_legal) {
startActivity(new Intent(this, LegalInfoActivity.class));
return true;
}
return super.onOptionsItemSelected(item);
}
@Override
public void onMapReady(GoogleMap map) {
mMap = map;
mUiSettings = mMap.getUiSettings();
mUiSettings.setZoomControlsEnabled(true);
mUiSettings.setScrollGesturesEnabled(true);
mUiSettings.setZoomGesturesEnabled(true);
mMap.setOnMapLongClickListener(new GoogleMap.OnMapLongClickListener() {
@Override
public void onMapLongClick(LatLng point) {
mMap.addMarker(new MarkerOptions()
.position(point)
.snippet("this is a snippet"));
}
});
mMap.setOnMapClickListener(new GoogleMap.OnMapClickListener() {
@Override
public void onMapClick(LatLng point) {
}
});
mMap.setOnCameraChangeListener(new GoogleMap.OnCameraChangeListener() {
@Override
public void onCameraChange(CameraPosition position) {
float maxZoom = 7.0f;
if (position.zoom > maxZoom) {
mMap.animateCamera(CameraUpdateFactory.zoomTo(maxZoom));
}
}
});
}
}
Благодарим за отзыв. Я скачал это и посмотрел на него, но я считаю, что все демонстрации в кластере android-maps-utils основаны на маркерах, которые были введены до того, как пользователь помещает их в onMapLongClick. Входная сторона вещей - это то место, где я считаю, что меня повесили ... –
Вы можете добавлять элементы динамически в ClusterManager. Я отредактирую свой ответ, чтобы добавить несколько строк кода из моего проекта. –
добавил пример того, как вы можете просто использовать кластер. вам не нужен режим, чем тот, который вы хотите достичь. –