Package com.naver.maps.map.clustering
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>
Clusterer
를 생성하는 빌더 클래스. 복잡한 전략과 기능을 제공합니다. 간단한 기능만 필요하다면
Clusterer.Builder
를 사용하는 것을 권장합니다.-
Constructor Summary
-
Method Summary
Modifier and TypeMethodDescriptionanimationDuration
(int animationDuration) 카메라 확대/축소시 클러스터가 펼쳐지는/합쳐지는 애니메이션의 지속 시간을 지정합니다.build()
Clusterer
객체를 생성합니다.clusterMarkerUpdater
(ClusterMarkerUpdater clusterMarkerUpdater) 클러스터 마커의 정보를Marker
객체에 반영하는 업데이터를 지정합니다.distanceStrategy
(DistanceStrategy distanceStrategy) 각Node
간의 거리를 측정하는 전략을 지정합니다.int
카메라 확대/축소시 클러스터가 펼쳐지는/합쳐지는 애니메이션의 지속 시간을 반환합니다.클러스터 마커의 정보를Marker
객체에 반영하는 업데이터를 반환합니다.각Node
간의 거리를 측정하는 전략을 반환합니다.단말 마커의 정보를Marker
객체에 반영하는 업데이터를 반환합니다.Clusterer
에서 노출하는 마커를 관리하는 매니저를 반환합니다.int
클러스터링할 최대 줌 레벨을 반환합니다.int
인덱싱할 최대 줌 레벨을 반환합니다.double
클러스터링할 최대 화면 거리를 반환합니다.int
클러스터링할 최소 줌 레벨을 반환합니다.int
인덱싱할 최소 줌 레벨을 반환합니다.한Cluster
의 좌표를 정하는 전략을 반환합니다.두Node
를 클러스터링할 기준 거리를 구하는 전략을 반환합니다.boolean
화면상 마커를 갱신할 때NaverMap.OnCameraIdleListener
대신NaverMap.OnCameraChangeListener
를 사용할지 여부를 반환합니다.leafMarkerUpdater
(LeafMarkerUpdater leafMarkerUpdater) 단말 마커의 정보를Marker
객체에 반영하는 업데이터를 지정합니다.markerManager
(MarkerManager markerManager) Clusterer
에서 노출하는 마커를 관리하는 매니저를 지정합니다.maxClusteringZoom
(int maxClusteringZoom) 클러스터링할 최대 줌 레벨을 반환합니다.maxIndexingZoom
(int maxIndexingZoom) 인덱싱할 최대 줌 레벨을 지정합니다.maxScreenDistance
(double maxScreenDistance) 클러스터링할 최대 화면 거리를 지정합니다.minClusteringZoom
(int minClusteringZoom) 클러스터링할 최소 줌 레벨을 지정합니다.minIndexingZoom
(int minIndexingZoom) 인덱싱할 최소 줌 레벨을 지정합니다.positioningStrategy
(PositioningStrategy positioningStrategy) 한Cluster
의 좌표를 정하는 전략을 지정합니다.tagMergeStrategy
(TagMergeStrategy tagMergeStrategy) thresholdStrategy
(ThresholdStrategy thresholdStrategy) 두Node
를 클러스터링할 기준 거리를 구하는 전략을 지정합니다.updateOnChange
(boolean updateOnChange) 화면상 마커를 갱신할 때NaverMap.OnCameraIdleListener
대신NaverMap.OnCameraChangeListener
를 사용할지 여부를 지정합니다.
-
Constructor Details
-
ComplexBuilder
public ComplexBuilder()생성자.
-
-
Method Details
-
getThresholdStrategy
- Returns:
ThresholdStrategy
객체.
-
getDistanceStrategy
각Node
간의 거리를 측정하는 전략을 반환합니다.
기본값은Clusterer.DEFAULT_SCREEN_DISTANCE
를 생성자 파라메터로 지정한DefaultThresholdStrategy
인스턴스입니다.- Returns:
DistanceStrategy
객체.
-
getPositioningStrategy
- Returns:
PositioningStrategy
객체.
-
getTagMergeStrategy
- Returns:
TagMergeStrategy
객체.
-
getMarkerManager
- Returns:
MarkerManager
객체.
-
getClusterMarkerUpdater
- Returns:
ClusterMarkerUpdater
객체.
-
getLeafMarkerUpdater
- Returns:
LeafMarkerUpdater
객체.
-
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)
보다 크더라도 클러스터링되지 않습니다. 한편 최대 화면 거리는 탐색 공간을 제한하는 역할을 하므로 값을 크게 지정할수록 성능이 저하됩니다.
따라서DistanceStrategy
와ThresholdStrategy
를 별도로 지정했다면 전략을 고려해 적절한 값을 지정해야 합니다. 예를 들어DefaultDistanceStrategy
와DefaultThresholdStrategy
를 사용한다면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)
보다 크더라도 클러스터링되지 않습니다. 한편 최대 화면 거리는 탐색 공간을 제한하는 역할을 하므로 값을 크게 지정할수록 성능이 저하됩니다.
따라서DistanceStrategy
와ThresholdStrategy
를 별도로 지정했다면 전략을 고려해 적절한 값을 지정해야 합니다. 예를 들어DefaultDistanceStrategy
와DefaultThresholdStrategy
를 사용한다면DefaultThresholdStrategy
의 생성자 파라메터로 지정한 거리와 동일한 값을 지정했을 때 가장 좋은 효율을 낼 수 있습니다.
기본값은Clusterer.DEFAULT_SCREEN_DISTANCE
입니다.- Parameters:
maxScreenDistance
- 클러스터링할 최대 화면 거리. DP 단위.- Returns:
- 객체 자신.
-
getAnimationDuration
public int getAnimationDuration()카메라 확대/축소시 클러스터가 펼쳐지는/합쳐지는 애니메이션의 지속 시간을 반환합니다.0
일 경우 애니메이션이 적용되지 않습니다.
기본값은Clusterer.DEFAULT_ANIMATION_DURATION_MILLIS
입니다.- Returns:
- 클러스터가 펼쳐지는/합쳐지는 애니메이션의 지속 시간. 밀리초 단위.
-
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
화면상 마커를 갱신할 때NaverMap.OnCameraIdleListener
대신NaverMap.OnCameraChangeListener
를 사용할지 여부를 지정합니다.NaverMap.OnCameraChangeListener
를 사용하면 더 빠르게 갱신되지만 성능이 하락합니다.
기본값은false
입니다.- Parameters:
updateOnChange
-NaverMap.OnCameraChangeListener
를 사용할 경우true
,NaverMap.OnCameraIdleListener
를 사용할 경우false
.- Returns:
- 객체 자신.
-
build
Clusterer
객체를 생성합니다.- Returns:
Clusterer
객체.
-