Class Clusterer.ComplexBuilder<T extends ClusteringKey>

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

public static class Clusterer.ComplexBuilder<T extends ClusteringKey> extends Object
Clusterer를 생성하는 빌더 클래스. 복잡한 전략과 기능을 제공합니다. 간단한 기능만 필요하다면 Clusterer.Builder를 사용하는 것을 권장합니다.
  • Constructor Details

    • ComplexBuilder

      public ComplexBuilder()
      생성자.
  • Method Details

    • getThresholdStrategy

      @NonNull public ThresholdStrategy getThresholdStrategy()
      Node를 클러스터링할 기준 거리를 구하는 전략을 반환합니다.

      기본값은 DefaultThresholdStrategy 인스턴스입니다.
      Returns:
      ThresholdStrategy 객체.
    • thresholdStrategy

      @NonNull public Clusterer.ComplexBuilder<T> thresholdStrategy(@NonNull ThresholdStrategy thresholdStrategy)
      Node를 클러스터링할 기준 거리를 구하는 전략을 지정합니다.

      기본값은 DefaultThresholdStrategy 인스턴스입니다.
      Parameters:
      thresholdStrategy - ThresholdStrategy 객체.
      Returns:
      객체 자신.
    • getDistanceStrategy

      @NonNull public DistanceStrategy getDistanceStrategy()
      Node간의 거리를 측정하는 전략을 반환합니다.

      기본값은 Clusterer.DEFAULT_SCREEN_DISTANCE를 생성자 파라메터로 지정한 DefaultThresholdStrategy 인스턴스입니다.
      Returns:
      DistanceStrategy 객체.
    • distanceStrategy

      @NonNull public Clusterer.ComplexBuilder<T> distanceStrategy(@NonNull DistanceStrategy distanceStrategy)
      Node간의 거리를 측정하는 전략을 지정합니다.

      기본값은 Clusterer.DEFAULT_SCREEN_DISTANCE를 생성자 파라메터로 지정한 DefaultThresholdStrategy 인스턴스입니다.
      Parameters:
      distanceStrategy - DistanceStrategy 객체.
      Returns:
      객체 자신.
    • getPositioningStrategy

      @NonNull public PositioningStrategy getPositioningStrategy()
      Cluster의 좌표를 정하는 전략을 반환합니다.

      기본값은 DefaultPositioningStrategy 인스턴스입니다.
      Returns:
      PositioningStrategy 객체.
    • positioningStrategy

      @NonNull public Clusterer.ComplexBuilder<T> positioningStrategy(@NonNull PositioningStrategy positioningStrategy)
      Cluster의 좌표를 정하는 전략을 지정합니다.

      기본값은 DefaultPositioningStrategy 인스턴스입니다.
      Parameters:
      positioningStrategy - PositioningStrategy 객체.
      Returns:
      객체 자신.
    • getTagMergeStrategy

      @NonNull public TagMergeStrategy getTagMergeStrategy()
      부모 Cluster의 자식 Node들의 태그를 병합하는 전략을 반환합니다.

      기본값은 DefaultTagMergeStrategy 인스턴스입니다.
      Returns:
      TagMergeStrategy 객체.
    • tagMergeStrategy

      @NonNull public Clusterer.ComplexBuilder<T> tagMergeStrategy(@NonNull TagMergeStrategy tagMergeStrategy)
      부모 Cluster의 자식 Node들의 태그를 병합하는 전략을 지정합니다.

      기본값은 DefaultTagMergeStrategy 인스턴스입니다.
      Parameters:
      tagMergeStrategy - TagMergeStrategy 객체.
      Returns:
      객체 자신.
    • getMarkerManager

      @NonNull public MarkerManager getMarkerManager()
      Clusterer에서 노출하는 마커를 관리하는 매니저를 반환합니다.

      기본값은 DefaultMarkerManager 인스턴스입니다.
      Returns:
      MarkerManager 객체.
    • markerManager

      @NonNull public Clusterer.ComplexBuilder<T> markerManager(@NonNull MarkerManager markerManager)
      Clusterer에서 노출하는 마커를 관리하는 매니저를 지정합니다.

      기본값은 DefaultMarkerManager 인스턴스입니다.
      Parameters:
      markerManager - MarkerManager 객체.
      Returns:
      객체 자신.
    • getClusterMarkerUpdater

      @NonNull public ClusterMarkerUpdater getClusterMarkerUpdater()
      클러스터 마커의 정보를 Marker 객체에 반영하는 업데이터를 반환합니다.

      기본값은 DefaultClusterMarkerUpdater 인스턴스입니다.
      Returns:
      ClusterMarkerUpdater 객체.
    • clusterMarkerUpdater

      @NonNull public Clusterer.ComplexBuilder<T> clusterMarkerUpdater(@NonNull ClusterMarkerUpdater clusterMarkerUpdater)
      클러스터 마커의 정보를 Marker 객체에 반영하는 업데이터를 지정합니다.

      기본값은 DefaultClusterMarkerUpdater 인스턴스입니다.
      Parameters:
      clusterMarkerUpdater - ClusterMarkerUpdater 객체.
      Returns:
      객체 자신.
    • getLeafMarkerUpdater

      @NonNull public LeafMarkerUpdater getLeafMarkerUpdater()
      단말 마커의 정보를 Marker 객체에 반영하는 업데이터를 반환합니다.

      기본값은 DefaultLeafMarkerUpdater 인스턴스입니다.
      Returns:
      LeafMarkerUpdater 객체.
    • leafMarkerUpdater

      @NonNull public Clusterer.ComplexBuilder<T> leafMarkerUpdater(@NonNull LeafMarkerUpdater leafMarkerUpdater)
      단말 마커의 정보를 Marker 객체에 반영하는 업데이터를 지정합니다.

      기본값은 DefaultLeafMarkerUpdater 인스턴스입니다.
      Parameters:
      leafMarkerUpdater - LeafMarkerUpdater 객체.
      Returns:
      객체 자신.
    • getMinClusteringZoom

      public int getMinClusteringZoom()
      클러스터링할 최소 줌 레벨을 반환합니다. 카메라의 줌 레벨이 최소 줌 레벨보다 낮다면 두 데이터가 화면상 기준 거리보다 가깝더라도 더 이상 클러스터링되지 않습니다. 예를 들어, 클러스터링할 최소 줌 레벨이 4라면, 카메라의 줌 레벨을 3레벨 이하로 축소하더라도 4레벨의 클러스터가 더 이상 클러스터링되지 않고 그대로 유지됩니다.

      기본값은 NaverMap.MINIMUM_ZOOM입니다.
      Returns:
      클러스터링할 최소 줌 레벨.
    • minClusteringZoom

      public Clusterer.ComplexBuilder<T> minClusteringZoom(@IntRange(from=0L,to=21L) int minClusteringZoom)
      클러스터링할 최소 줌 레벨을 지정합니다. 카메라의 줌 레벨이 최소 줌 레벨보다 낮다면 두 데이터가 화면상 기준 거리보다 가깝더라도 더 이상 클러스터링되지 않습니다. 예를 들어, 클러스터링할 최소 줌 레벨이 4라면, 카메라의 줌 레벨을 3레벨 이하로 축소하더라도 4레벨의 클러스터가 더 이상 클러스터링되지 않고 그대로 유지됩니다.

      기본값은 NaverMap.MINIMUM_ZOOM입니다.
      Parameters:
      minClusteringZoom - 클러스터링할 최소 줌 레벨.
      Returns:
      객체 자신.
    • getMaxClusteringZoom

      public int getMaxClusteringZoom()
      클러스터링할 최대 줌 레벨을 반환합니다. 카메라의 줌 레벨이 최대 줌 레벨보다 높다면 두 데이터가 화면상 기준 거리보다 가깝더라도 더 이상 클러스터링되지 않습니다. 예를 들어, 클러스터링할 최대 줌 레벨이 16이라면, 카메라의 줌 레벨을 17레벨 이상으로 확대하면 모든 데이터가 클러스터링되지 않고 낱개로 나타납니다. 따라서 클러스터링할 최대 줌 레벨이 지도의 최대 줌 레벨보다 크거나 같다면 카메라를 최대 줌 레벨로 확대하더라도 일부 데이터는 여전히 클러스터링된 채 더 이상 펼쳐지지 않을 수 있습니다.

      기본값은 NaverMap.MINIMUM_ZOOM - 1입니다.
      Returns:
      클러스터링할 최대 줌 레벨.
    • maxClusteringZoom

      @NonNull public Clusterer.ComplexBuilder<T> maxClusteringZoom(@IntRange(from=0L,to=21L) int maxClusteringZoom)
      클러스터링할 최대 줌 레벨을 반환합니다. 카메라의 줌 레벨이 최대 줌 레벨보다 높다면 두 마커가 화면상 기준 거리보다 가깝더라도 더 이상 클러스터링되지 않습니다. 예를 들어, 클러스터링할 최대 줌 레벨이 16이라면, 카메라의 줌 레벨을 17레벨 이상으로 확대하면 모든 데이터가 클러스터링되지 않고 낱개로 나타납니다. 따라서 클러스터링할 최대 줌 레벨이 지도의 최대 줌 레벨보다 크거나 같다면 카메라를 최대 줌 레벨로 확대하더라도 일부 데이터는 여전히 클러스터링된 채 더 이상 펼쳐지지 않을 수 있습니다.

      기본값은 NaverMap.MINIMUM_ZOOM - 1입니다.
      Parameters:
      maxClusteringZoom - 클러스터링할 최대 줌 레벨.
      Returns:
      객체 자신.
    • getMinIndexingZoom

      public int getMinIndexingZoom()
      인덱싱할 최소 줌 레벨을 반환합니다. 클러스터링할 최소 줌 레벨보다 작거나 같아야 합니다.

      Clusterer는 효율적인 클러스터링을 위해 공간 인덱스를 사용하는데 인덱스를 구축하는 데 자원이 소모됩니다. 따라서 인덱싱할 최소 줌 레벨을 적절하게 제한하면 성능이 향상될 수 있습니다. 반면 과도하게 제한하면 인덱싱할 줌 레벨 미만의 줌 레벨에서 렌더링 성능이 저하될 수 있습니다. 일반적으로 지도의 최소 줌 레벨과 동일하게 지정할 때 가장 좋은 효율을 낼 수 있습니다.

      기본값은 NaverMap.MINIMUM_ZOOM입니다.
      Returns:
      인덱싱할 최소 줌 레벨.
    • minIndexingZoom

      @NonNull public Clusterer.ComplexBuilder<T> minIndexingZoom(@IntRange(from=0L,to=21L) int minIndexingZoom)
      인덱싱할 최소 줌 레벨을 지정합니다. 클러스터링할 최소 줌 레벨보다 작거나 같아야 합니다.

      Clusterer는 효율적인 클러스터링을 위해 공간 인덱스를 사용하는데 인덱스를 구축하는 데 자원이 소모됩니다. 따라서 인덱싱할 최소 줌 레벨을 적절하게 제한하면 성능이 향상될 수 있습니다. 반면 과도하게 제한하면 인덱싱할 줌 레벨 미만의 줌 레벨에서 렌더링 성능이 저하될 수 있습니다. 일반적으로 지도의 최소 줌 레벨과 동일하게 지정할 때 가장 좋은 효율을 낼 수 있습니다.

      기본값은 NaverMap.MAXIMUM_ZOOM - 1입니다.
      Parameters:
      minIndexingZoom - 인덱싱할 최소 줌 레벨.
      Returns:
      객체 자신.
    • getMaxIndexingZoom

      public int getMaxIndexingZoom()
      인덱싱할 최대 줌 레벨을 반환합니다. 클러스터링할 최대 줌 레벨보다 크거나 같아야 합니다.

      Clusterer는 효율적인 클러스터링을 위해 공간 인덱스를 사용하는데 인덱스를 구축하는 데 자원이 소모됩니다. 따라서 인덱싱할 최대 줌 레벨을 적절하게 제한하면 성능이 향상될 수 있습니다. 반면 과도하게 제한하면 인덱싱할 줌 레벨을 초과하는 줌 레벨에서 렌더링 성능이 저하될 수 있습니다. 일반적으로 지도의 최대 줌 레벨보다 1 작게 지정할 때 가장 좋은 효율을 낼 수 있습니다.

      기본값은 NaverMap.MAXIMUM_ZOOM - 1입니다.
      Returns:
      인덱싱할 최대 줌 레벨.
    • maxIndexingZoom

      @NonNull public Clusterer.ComplexBuilder<T> maxIndexingZoom(@IntRange(from=0L,to=21L) int maxIndexingZoom)
      인덱싱할 최대 줌 레벨을 지정합니다. 클러스터링할 최대 줌 레벨보다 크거나 같아야 합니다.

      Clusterer는 효율적인 클러스터링을 위해 공간 인덱스를 사용하는데 인덱스를 구축하는 데 자원이 소모됩니다. 따라서 인덱싱할 최대 줌 레벨을 적절하게 제한하면 성능이 향상될 수 있습니다. 반면 과도하게 제한하면 인덱싱할 줌 레벨을 초과하는 줌 레벨에서 렌더링 성능이 저하될 수 있습니다. 일반적으로 지도의 최대 줌 레벨보다 1 작게 지정할 때 가장 좋은 효율을 낼 수 있습니다.

      기본값은 NaverMap.MAXIMUM_ZOOM - 1입니다.
      Parameters:
      maxIndexingZoom - 인덱싱할 최대 줌 레벨.
      Returns:
      객체 자신.
    • getMaxScreenDistance

      @Dimension(unit=0) public double getMaxScreenDistance()
      클러스터링할 최대 화면 거리를 반환합니다. 두 데이터의 화면상 거리가 이 값보다 작을 경우에만 클러스터링 후보가 됩니다. 즉, 두 데이터의 화면상 거리가 이 값보다 크다면, DistanceStrategy.getDistance(int, Node, Node)가 반환한 둘 간의 거리가 ThresholdStrategy.getThreshold(int)보다 크더라도 클러스터링되지 않습니다. 한편 최대 화면 거리는 탐색 공간을 제한하는 역할을 하므로 값을 크게 지정할수록 성능이 저하됩니다.

      따라서 DistanceStrategyThresholdStrategy를 별도로 지정했다면 전략을 고려해 적절한 값을 지정해야 합니다. 예를 들어 DefaultDistanceStrategyDefaultThresholdStrategy를 사용한다면 DefaultThresholdStrategy의 생성자 파라메터로 지정한 거리와 동일한 값을 지정했을 때 가장 좋은 효율을 낼 수 있습니다.

      기본값은 Clusterer.DEFAULT_SCREEN_DISTANCE입니다.
      Returns:
      클러스터링할 최대 화면 거리. DP 단위.
    • maxScreenDistance

      @NonNull public Clusterer.ComplexBuilder<T> maxScreenDistance(@Dimension(unit=0) double maxScreenDistance)
      클러스터링할 최대 화면 거리를 지정합니다. 두 데이터의 화면상 거리가 이 값보다 작을 경우에만 클러스터링 후보가 됩니다. 즉, 두 데이터의 화면상 거리가 이 값보다 크다면, DistanceStrategy.getDistance(int, Node, Node)가 반환한 둘 간의 거리가 ThresholdStrategy.getThreshold(int)보다 크더라도 클러스터링되지 않습니다. 한편 최대 화면 거리는 탐색 공간을 제한하는 역할을 하므로 값을 크게 지정할수록 성능이 저하됩니다.

      따라서 DistanceStrategyThresholdStrategy를 별도로 지정했다면 전략을 고려해 적절한 값을 지정해야 합니다. 예를 들어 DefaultDistanceStrategyDefaultThresholdStrategy를 사용한다면 DefaultThresholdStrategy의 생성자 파라메터로 지정한 거리와 동일한 값을 지정했을 때 가장 좋은 효율을 낼 수 있습니다.

      기본값은 Clusterer.DEFAULT_SCREEN_DISTANCE입니다.
      Parameters:
      maxScreenDistance - 클러스터링할 최대 화면 거리. DP 단위.
      Returns:
      객체 자신.
    • getAnimationDuration

      public int getAnimationDuration()
      카메라 확대/축소시 클러스터가 펼쳐지는/합쳐지는 애니메이션의 지속 시간을 반환합니다. 0일 경우 애니메이션이 적용되지 않습니다.

      기본값은 Clusterer.DEFAULT_ANIMATION_DURATION_MILLIS입니다.
      Returns:
      클러스터가 펼쳐지는/합쳐지는 애니메이션의 지속 시간. 밀리초 단위.
    • animationDuration

      @NonNull public Clusterer.ComplexBuilder<T> animationDuration(int animationDuration)
      카메라 확대/축소시 클러스터가 펼쳐지는/합쳐지는 애니메이션의 지속 시간을 지정합니다. 0일 경우 애니메이션이 적용되지 않습니다.

      기본값은 Clusterer.DEFAULT_ANIMATION_DURATION_MILLIS입니다.
      Parameters:
      animationDuration - 클러스터가 펼쳐지는/합쳐지는 애니메이션의 지속 시간. 밀리초 단위.
      Returns:
      객체 자신.
    • isUpdateOnChange

      public boolean isUpdateOnChange()
      화면상 마커를 갱신할 때 NaverMap.OnCameraIdleListener 대신 NaverMap.OnCameraChangeListener를 사용할지 여부를 반환합니다. NaverMap.OnCameraChangeListener를 사용하면 더 빠르게 갱신되지만 성능이 하락합니다.

      기본값은 false입니다.
      Returns:
      NaverMap.OnCameraChangeListener를 사용할 경우 true, NaverMap.OnCameraIdleListener를 사용할 경우 false.
    • updateOnChange

      @NonNull public Clusterer.ComplexBuilder<T> updateOnChange(boolean updateOnChange)
      화면상 마커를 갱신할 때 NaverMap.OnCameraIdleListener 대신 NaverMap.OnCameraChangeListener를 사용할지 여부를 지정합니다. NaverMap.OnCameraChangeListener를 사용하면 더 빠르게 갱신되지만 성능이 하락합니다.

      기본값은 false입니다.
      Parameters:
      updateOnChange - NaverMap.OnCameraChangeListener를 사용할 경우 true, NaverMap.OnCameraIdleListener를 사용할 경우 false.
      Returns:
      객체 자신.
    • build

      @NonNull public Clusterer<T> build()
      Clusterer 객체를 생성합니다.
      Returns:
      Clusterer 객체.