Das ist eine brillante Idee. Ich arbeite an einer ähnlichen App, ich hoffe, es macht Ihnen nichts aus, wenn ich das Konzept auch umsetzen werde :).
Um Ihre Frage zu beantworten die besten meiner eigenen Fähigkeit, nein, ich glaube nicht, es gibt eine vordefinierte Möglichkeit, dies zu tun.
Der beste Weg, um es (nach dem Betrachten der iOS4 Fotos App) zu tun, ist die mapView:regionDidChangeAnimated:
Delegate-Methode zu verwenden. Jedes Mal, wenn der Benutzer scrollt/zoomt, wird diese Methode aufgerufen.
Innerhalb dieser Methode könnten Sie eine schnelle Geometrie-Mathe haben, um zu bestimmen, ob Ihre Punkte "nah genug" sind, um das Zusammenführen in Betracht zu ziehen. Sobald sie "zusammengeführt" sind, entfernen Sie eine oder beide Annotationen und fügen eine weitere Annotation an derselben Stelle ein, die eine Referenz auf beide ist (Sie könnten sehr einfach eine AnnotationCluster-Klasse erstellen, die MKAnnotation entsprechen könnte, aber auch eine NSArray von Annotationen und auch Methoden zum "Ausbrechen" oder "Absorbieren" anderer Annotationen und/oder AnnotationCluster-Instanzen usw.).
Wenn ich "schnelle Geometrie Mathe" sage, meine ich die Entfernung der zwei Punkte relativ zur Spannweite der Karte, und ihre relative Entfernung als Prozentsatz der Spannweite der ganzen Karte.
Wo würde es schwierig werden, wenn Sie Hunderte von Anmerkungen hatten, wie ich nicht denken kann über eine gute Möglichkeit, das ohne eine doppelte Schleife zu implementieren.
Was meinen Sie?
www.BMSClusterMap.com – nurxyz