To genialny pomysł. Pracuję nad podobną aplikacją, mam nadzieję, że nie masz nic przeciwko, jeśli zaimplementuję tę koncepcję :).
Aby odpowiedzieć na twoje pytanie najlepiej jak potrafię, nie, nie sądzę, aby istniała wcześniej zdefiniowana metoda.
Najlepszym sposobem na zrobienie tego (po obejrzeniu aplikacji do zdjęć iOS4) jest skorzystanie z metody delegatów mapView:regionDidChangeAnimated:
. Za każdym razem, gdy użytkownik przewinie/przybliży, ta metoda zostanie wywołana.
Wewnątrz tej metody możesz mieć matematykę z szybką geometrią, aby określić, czy twoje punkty są "wystarczająco blisko", aby rozważyć scalenie. Po ich "scaleniu" usuniesz jedną lub obie adnotacje i umieścisz kolejną adnotację z powrotem w tym samym miejscu, które jest odwołaniem do obu (możesz bardzo łatwo utworzyć klasę AnnotationCluster, która może być zgodna z MKAnnotation, ale także posiadać NSArray adnotacji, a także zawierają metody "wyłamywania" lub "pochłaniania" innych adnotacji i/lub instancji AnnotationCluster itp.).
Kiedy mówię "matematyka szybkiej geometrii", mam na myśli odległość dwóch punktów w stosunku do rozpiętości mapy i uwzględnienie ich względnej odległości jako wartości procentowej zakresu całej mapy.
To byłoby trudne, gdybyś miał setki adnotacji, ponieważ nie potrafię od razu wymyślić dobrego sposobu na wprowadzenie tego bez podwójnej pętli.
Co myślisz?
www.BMSClusterMap.com – nurxyz