Расширить штифты из центра кластера на самом деле довольно просто. При создании новых однопиновых аннотаций установите их координаты в центре кластера:
id <MKAnnotation> pin;
CLLocationCoordinate2D clusterCenter;
// ...
pin.coordinate = clusterCenter;
В viewForAnnotation:
не анимируйте новые контакты:
MKPinAnnotationView *pinView;
// ...
pinView.animatesDrop = NO;
Затем, после того, как вы добавили булавки в вид карты, вы анимируете перемещение их в их реальные позиции:
MKMapView *mapView;
id <MKAnnotation> pin;
// ...
// probably loop over annotations
[mapView addAnnotation:pin];
NSTimeInterval interval = 1.0; // or whatever
[UIView animateWithDuration:interval animations:^{
// probably loop over annotations here again
CLLocationCoordinate2D realCoord;
// ...
pin.coordinate = realCoord;
}];
Что касается проблемы некластеризованных выводов, то на нее сложнее ответить, не зная детали реализации, но я думаю, что есть много возможностей. Вы могли бы просто иметь простой флаг, который пропускает анимацию. Или вы можете просто обращаться с ними точно так же, и при этом «кластеризовать» их, даже когда они соло, и все же анимировать их ... не максимально эффективно, но это будет работать, и ваш код будет чище.