Событие щелчка маркером для кластерных маркеров и некластеризованных маркеров
Я хочу добавить событие щелчка маркером для кластерных маркеров и некластеризованных маркеров. Кластерные маркеры работают, передавая менеджер кластера в событие щелчка маркера. Однако при этом он переопределяет событие щелчка маркера для некластеризованных маркеров и наоборот. У меня есть изображения для кластерных маркеров и обычные маркеры карты для некластеризованных маркеров.
Я хочу быть в состоянии удалить некластеризованные маркеры по щелчку маркера. Я пробовал карту с длинным кликом, учитывая расстояние, например:
@Override
public void onMapLongClick(LatLng latLng) {
for (Marker marker : listOfGeoTagMarkers) {
/* if(Math.abs(marker.getPosition().latitude - latLng.latitude) < 0.05 && Math.abs(marker.getPosition().longitude - latLng.longitude) < 0.05) {
Toast.makeText(MapActivity.this, "got clicked", Toast.LENGTH_SHORT).show(); //do some stuff
break;
}*/
double distance = SphericalUtil.computeDistanceBetween(
marker.getPosition(), latLng);
if ( distance < 300 ) { // closer than 50 meters?
Toast.makeText(MapsActivity.this, "got clicked", Toast.LENGTH_SHORT).show();
}
}
Однако множитель расстояния (здесь это 300, но это может быть 50 или 100 и т. Д.) Слишком нерешителен при определенных уровнях масштабирования с выводами. Дистанция в порядке, если вы полностью увеличены и можете точно касаться маркера.
Однако, когда вы уменьшаете масштаб, недостижимое расстояние увеличивается или уменьшается слишком резко, чтобы точно делать то, что нужно. В простом событии тоста я бы поставил код удаления для рассматриваемого маркера.
Любая помощь приветствуется.