C'est une idée géniale. Je travaille sur une application similaire, j'espère que cela ne vous dérange pas si je mets aussi en application le concept :).
Pour répondre à votre question de mon mieux, non, je ne pense pas qu'il existe une façon prédéfinie de le faire.
La meilleure façon de le faire (après avoir regardé l'application photos iOS4), est d'utiliser la méthode mapView:regionDidChangeAnimated:
delegate. Chaque fois que l'utilisateur fait défiler/zooms, cette méthode sera appelée. A l'intérieur de cette méthode, vous pourriez avoir quelques maths de géométrie rapide pour déterminer si vos points sont "assez proches" pour envisager la fusion. Une fois qu'ils sont "fusionnés", vous supprimez une ou les deux annotations, et vous remettez une autre annotation au même endroit que les deux (vous pourriez très facilement créer une classe AnnotationCluster qui pourrait être conforme à MKAnnotation mais aussi contenir une annotation NSArray d'annotations, et contient également des méthodes pour "sortir" ou "absorber" d'autres annotations et/ou des instances d'AnnotationCluster, etc. Quand je dis «mathématique de géométrie rapide», je veux dire la distance des deux points par rapport à l'étendue de la carte, et en prenant leur distance relative en pourcentage de l'étendue de la carte entière. Là où cela serait difficile, c'est que si vous aviez des centaines d'annotations, je ne peux pas penser à un bon moyen d'implémenter cela sans une double boucle.
Que pensez-vous?
www.BMSClusterMap.com – nurxyz