Кластеризацию вручную писал
Там есть метод дистанс у ЯндексЮтилс вроде. С помощью него собираешь
clusters=ArrayList<ArrayList<MyPoint>>
по определенному радиусу.
Берешь каждый элемент (points) из clusters и вычисляешь среднее значение всех координат точек из points, на выходе будет новая точка, допустим avgPoint. Затем засовываешь point в userData и на карте отображаешь в точке avgPoint.