Class Clusterer<T extends ClusteringKey>

java.lang.Object
com.naver.maps.map.clustering.Clusterer<T>
Type Parameters:
T - 키의 타입.

@UiThread public class Clusterer<T extends ClusteringKey> extends Object
겹치는 여러 마커를 클러스터링해서 하나의 마커로 보여주는 기능을 제공하는 클래스. 이 클래스의 인스턴스는 직접 생성할 수 없고 Clusterer.Builder 또는 Clusterer.ComplexBuilder 빌더 클래스를 이용해 생성해야 합니다. 여러 마커가 시각적으로 겹치는 상황을 방지하는 기본적인 기능만 필요하다면 Clusterer.Builder를, 복잡한 전략과 기능이 필요하다면 Clusterer.ComplexBuilder를 사용하는 것을 권장합니다.

Clusterer를 사용하려면 먼저 데이터의 키를 의미하는 ClusteringKey 인터페이스를 구현한 클래스를 정의해야 합니다. 이 클래스를 타입 파라메터로 지정해 Clusterer 인스턴스를 만들고, add(ClusteringKey, Object) 또는 addAll(Map)을 호출해 데이터를 추가한 후 setMap(NaverMap)을 호출해 지도 객체를 지정하면 지정한 데이터가 클러스터링되어 나타납니다.
  • Field Details

    • DEFAULT_SCREEN_DISTANCE

      @Dimension(unit=0) public static final double DEFAULT_SCREEN_DISTANCE
      두 마커가 인접했을 때 클러스터링될 기본 화면상 거리. DP 단위.
      See Also:
    • DEFAULT_ANIMATION_DURATION_MILLIS

      public static final int DEFAULT_ANIMATION_DURATION_MILLIS
      클러스터가 펼쳐지는/합쳐지는 애니메이션의 기본 지속 시간. 밀리초 단위.
      See Also:
  • Method Details

    • getMap

      @Nullable public NaverMap getMap()
      클러스터러가 추가된 지도 객체를 반환합니다.
      Returns:
      클러스터러가 추가된 지도 객체. 지도에 추가된 상태가 아닐 경우 null.
    • setMap

      public void setMap(@Nullable NaverMap map)
      클러스터러를 map에 추가합니다. mapnull을 지정하면 지도에서 제거됩니다.
      Parameters:
      map - 클러스터러를 추가할 지도 객체.
    • isEmpty

      public boolean isEmpty()
      데이터가 비어있는지 여부를 반환합니다.
      Returns:
      비어있을 경우 true, 그렇지 않을 경우 false.
    • contains

      public boolean contains(@NonNull T key)
      데이터에 key가 포함되어있는지 여부를 반환합니다.
      Parameters:
      key - 포함 여부를 확인할 키.
      Returns:
      포함되어있을 경우 true, 그렇지 않을 경우 false.
    • clear

      public void clear()
      모든 데이터를 제거합니다.
    • clear

      public void clear(@Nullable OnClustererUpdateCallback callback)
      모든 데이터를 제거합니다.
      Parameters:
      callback - 데이터 제거가 완료되면 호출될 콜백.
    • add

      public void add(@NonNull T key, @Nullable Object tag)
      데이터를 추가합니다. 이 메서드를 여러 번 호출하면 지도에도 호출한 횟수만큼 나누어 반영됩니다. 따라서 여러 데이터를 한 번에 추가하고자 할 경우 addAll(Map)을 사용하면 성능이 향상됩니다.
      Parameters:
      key - 데이터의 키.
      tag - 데이터의 태그.
    • add

      public void add(@NonNull T key, @Nullable Object tag, @Nullable OnClustererUpdateCallback callback)
      데이터를 추가합니다. 이 메서드를 여러 번 호출하면 지도에도 호출한 횟수만큼 나누어 반영됩니다. 따라서 여러 데이터를 한 번에 추가하고자 할 경우 addAll(Map, OnClustererUpdateCallback)을 사용하면 성능이 향상됩니다.
      Parameters:
      key - 데이터의 키.
      tag - 데이터의 태그.
      callback - 데이터 추가가 완료되면 호출될 콜백.
    • addAll

      public void addAll(@NonNull Map<T,?> keyTagMap)
      여러 데이터를 한 번에 추가합니다. 데이터를 한 번에 추가할 경우 지도에도 한 번에 반영됩니다.
      Parameters:
      keyTagMap - 키가 데이터의 키, 값이 데이터의 태그인 Map.
    • addAll

      public void addAll(@NonNull Map<T,?> keyTagMap, @Nullable OnClustererUpdateCallback callback)
      여러 데이터를 한 번에 추가합니다. 데이터를 한 번에 추가할 경우 지도에도 한 번에 반영됩니다.
      Parameters:
      keyTagMap - 키가 데이터의 키, 값이 데이터의 태그인 Map.
      callback - 데이터 추가가 완료되면 호출될 콜백.
    • remove

      public void remove(@NonNull T key)
      데이터를 제거합니다. 이 메서드를 여러 번 호출하면 지도에도 호출한 횟수만큼 나누어 반영됩니다. 따라서 여러 데이터를 한 번에 제거하고자 할 경우 removeAll(Collection)을 사용하면 성능이 향상됩니다.
      Parameters:
      key - 데이터의 키.
    • remove

      public void remove(@NonNull T key, @Nullable OnClustererUpdateCallback callback)
      데이터를 제거합니다. 이 메서드를 여러 번 호출하면 지도에도 호출한 횟수만큼 나누어 반영됩니다. 따라서 여러 데이터를 한 번에 제거하고자 할 경우 removeAll(Collection, OnClustererUpdateCallback)을 사용하면 성능이 향상됩니다.
      Parameters:
      key - 데이터의 키.
      callback - 데이터 제거가 완료되면 호출될 콜백.
    • removeAll

      public void removeAll(@NonNull Collection<T> keys)
      여러 데이터를 한 번에 제거합니다. 데이터를 한 번에 제거할 경우 지도에도 한 번에 반영됩니다.
      Parameters:
      keys - 제거할 키의 목록.
    • removeAll

      public void removeAll(@NonNull Collection<T> keys, @Nullable OnClustererUpdateCallback callback)
      여러 데이터를 한 번에 제거합니다. 데이터를 한 번에 제거할 경우 지도에도 한 번에 반영됩니다.
      Parameters:
      keys - 제거할 키의 목록.
      callback - 데이터 제거가 완료되면 호출될 콜백.