Clustering
-
See moreNMCClusterer를 생성하는 빌더 클래스. 클러스터링할 거리, 최소/최대 줌 레벨, 애니메이션 여부, 클러스터/단말 클러스터/단말 마커 커스터미이징 등 기본적인 기능을 제공합니다. 복잡한 전략과 기능이 필요하다면NMCComplexBuilder를 사용해야 합니다.Declaration
Objective-C
@interface NMCBuilder<__covariant KeyType : NSObject <NMCClusteringKey> *> : NSObjectSwift
class NMCBuilder<KeyType> : NSObject where KeyType : NSObject, KeyType : NMCClusteringKey -
겹치는 여러 마커를 클러스터링해서 하나의 마커로 보여주는 기능을 제공하는 클래스. 이 클래스의 인스턴스는 직접 생성할 수 없고
NMCBuilder또는NMCComplexBuilder빌더 클래스를 이용해 생성해야 합니다. 여러 마커가 시각적으로 겹치는 상황을 방지하는 기본적인 기능만 필요하다면NMCBuilder를, 복잡한 전략과 기능이 필요하다면NMCComplexBuilder를 사용하는 것을 권장합니다.
See moreNMCClusterer를 사용하려면 먼저 데이터의 키를 의미하는NMCClusteringKey프로토콜을 구현한 클래스를 정의해야 합니다. 이 클래스를 타입 파라메터로 지정해NMCClusterer인스턴스를 만들고,add:Tag:또는addAll:을 호출해 데이터를 추가한 후mapView를 이용해 지도 객체를 지정하면 지정한 데이터가 클러스터링되어 나타납니다.Declaration
Objective-C
@interface NMCClusterer<__covariant KeyType : NSObject <NMCClusteringKey> *> : NSObjectSwift
class NMCClusterer<KeyType> : NSObject where KeyType : NSObject, KeyType : NMCClusteringKey -
클러스터링될 데이터의 키를 의미하는 인터페이스.
클러스터러를 사용하고자 할 경우 이 인터페이스를 구현하는 클래스를 만들고, 그 타입을
NMCClusterer의 타입 파라미터로 지정해야 합니다.NMCClusterer는 두NMCClusteringKey인스턴스가 동일하다면(equality) 동일한 데이터로 간주합니다. 즉, 두 인스턴스의 좌표가 동일하더라도,NSObject.isEqual:가NO라면 다른 데이터로 간주합니다.이 특성을 이용해 동일한 좌표에 위치하는 여러 데이터를 중복해서 클러스터링할 수 있으므로 이 언터페이스를 구현하는 클래스는
See moreNSObject.isEqual:와NSObject.hash:도 구현하는 것이 권장됩니다.Declaration
Objective-C
@protocol NMCClusteringKey <NSObject, NSCopying>Swift
protocol NMCClusteringKey : NSCopying, NSObjectProtocol -
지도에 노출되어야 하는 클러스터 마커의 속성을 나타내는 클래스.
See moreDeclaration
Objective-C
@interface NMCClusterMarkerInfo : NMCMarkerInfoSwift
class NMCClusterMarkerInfo : NMCMarkerInfo -
단말 마커의 정보를
NMFMarker의 속성에 반영해 갱신하는 델리게이트.단말 마커가 지도에 처음 노출되거나 정보가 변경되면
See moreupdateClusterMarker::메서드가 호출되며, 이 메서드로 전달되는NMFMarker가 화면에 노출됩니다. 따라서 이 메서드 내에서NMCClusterMarkerInfo의 정보를 가져와NMFMarker의 속성에 적절하게 반영하도록 구현해야 합니다. 단,NMFMarker의NMFMarker.position및NMFMarker.mapView속성은 자동으로 관리되므로 별도로 반영할 필요가 없습니다.Declaration
Objective-C
@protocol NMCClusterMarkerUpdaterSwift
protocol NMCClusterMarkerUpdater -
클러스터러의 데이터 갱신이 완료되면 호출되는 콜백 타입.
Declaration
Objective-C
typedef void (^NMCClustererUpdateCallback)(void)Swift
typealias NMCClustererUpdateCallback = () -> Void -
See moreNMCClusterer를 생성하는 빌더 클래스. 복잡한 전략과 기능을 제공합니다. 간단한 기능만 필요하다면NMCBuilder를 사용하는 것을 권장합니다.Declaration
Objective-C
@interface NMCComplexBuilder< __covariant KeyType : NSObject <NMCClusteringKey> *> : NSObjectSwift
class NMCComplexBuilder<KeyType> : NSObject where KeyType : NSObject, KeyType : NMCClusteringKey -
기본
NMCClusterMarkerUpdater구현체.NMFMarker의 다음과 같은 속성을 지정합니다.- 아이콘(`NMFMarker.iconImage`): 클러스터의 크기(`NMCClusterMarkerInfo.size`)에 따라 `NMF_MARKER_IMAGE_CLUSTER_LOW_DENSITY`, `NMF_MARKER_IMAGE_CLUSTER_MEDIUM_DENSITY`, `NMF_MARKER_IMAGE_CLUSTER_HIGH_DENSITY` 중 하나로 지정됩니다.
- 앵커(`NMFMarker.anchor`): `CGPointMake(0.5, 0.5)`로 지정됩니다.
- 캡션 텍스트(`NMFMarker.captionText`): 클러스터의 크기(`NMCClusterMarkerInfo.size`)로 지정됩니다.
- 캡션 정렬 방향(`NMFMarker.captionAligns`): `NMFAlignType.center`로 지정됩니다.
- 캡션 색상(`NMFMarker.captionColor`): `UIColor.whiteColor`로 지정됩니다.
- 캡션 외곽 색상(`NMFMarker.captionHaloColor`): `UIColor.clearColor`로 지정됩니다.
- 마커 클릭 시 동작(`NMFMarker.touchHandler`): 클러스터가 펼쳐지는 최소 줌 레벨로 카메라를 확대하는 동작으로 지정됩니다.
Declaration
Objective-C
@interface NMCDefaultClusterMarkerUpdater : NSObject <NMCClusterMarkerUpdater>Swift
class NMCDefaultClusterMarkerUpdater : NSObject, NMCClusterMarkerUpdater -
See moreNMCDistanceStrategy구현체. 두NMCNode간의 화면상 거리를 측정합니다.Declaration
Objective-C
@interface NMCDefaultDistanceStrategy : NSObject <NMCDistanceStrategy>Swift
class NMCDefaultDistanceStrategy : NSObject, NMCDistanceStrategy -
기본
NMCLeafMarkerUpdater구현체.NMFMarker의 다음과 같은 속성을 지정합니다.- 아이콘(`NMFMarker.iconImage`): `NMF_MARKER_IMAGE_DEFAULT`로 지정됩니다.
- 앵커(`NMFMarker.anchor`): `CGPointMake(0.5, 1.0)`로 지정됩니다.
- 캡션 텍스트(`NMFMarker.captionText`): 빈 문자열(`“”`)로 지정됩니다.
- 캡션 정렬 방향(`NMFMarker.captionAligns`): `NMFAlignType.bottom`로 지정됩니다.
- 캡션 색상(`NMFMarker.captionColor`): `UIColor.blackColor`로 지정됩니다.
- 캡션 외곽 색상(`NMFMarker.captionHaloColor`): `UIColor.whiteColor`로 지정됩니다.
- 마커 클릭 시 동작(`NMFMarker.touchHandler`): `nil`로 지정되어 아무런 동작도 하지 않습니다.
Declaration
Objective-C
@interface NMCDefaultLeafMarkerUpdater : NSObject <NMCLeafMarkerUpdater>Swift
class NMCDefaultLeafMarkerUpdater : NSObject, NMCLeafMarkerUpdater -
기본
See moreNMCMarkerManager구현체. 이 클래스를 이용하면NMFMarker객체가 재사용되어 성능이 향상됩니다. 대신 한 번 사용되었던NMFMarker객체의 속성이 초기화되지 않고 계속 남으므로NMCClusterMarkerUpdater와NMCLeafMarkerUpdater에서 매번NMFMarker의 속성을 지정해야 합니다. 단, 변하지 않는 속성이 있다면createMarker:를 오버라이드해NMFMarker의 속성을 생성 직후 한 번만 지정하도록 최적화할 수 있습니다.Declaration
Objective-C
@interface NMCDefaultMarkerManager : NSObject <NMCMarkerManager>Swift
class NMCDefaultMarkerManager : NSObject, NMCMarkerManager -
기본
See moreNMCDefaultPositioningStrategy구현체. 자식 노드의 좌표의 무게 중심을 구합니다.Declaration
Objective-C
@interface NMCDefaultPositioningStrategy : NSObject <NMCPositioningStrategy>Swift
class NMCDefaultPositioningStrategy : NSObject, NMCPositioningStrategy -
기본
See moreNMCDefaultTagMergeStrategy구현체. 태그를 병합하지 않고 버립니다.Declaration
Objective-C
@interface NMCDefaultTagMergeStrategy : NSObject <NMCTagMergeStrategy>Swift
class NMCDefaultTagMergeStrategy : NSObject, NMCTagMergeStrategy -
기본
See moreNMCThresholdStrategy구현체. 고정된 기준 거리를 사용합니다.Declaration
Objective-C
@interface NMCDefaultThresholdStrategy : NSObject <NMCThresholdStrategy>Swift
class NMCDefaultThresholdStrategy : NSObject, NMCThresholdStrategy -
각
NMCNode간의 거리를 측정하는 전략에 대한 인터페이스.이 전략은
NMCThresholdStrategy와 밀접하게 연관되어 있습니다. 두 노드node1,node2가 있을 때,getDistance:Node1:Node2가 반환한 둘 간의 거리가NMCThresholdStrategy.getThreshold가 반환한 기준값보다 작거나 같으면 두 노드는zoom레벨에서 클러스터링됩니다.See moreSee
NMCThresholdStrategy.getThreshold:Declaration
Objective-C
@protocol NMCDistanceStrategySwift
protocol NMCDistanceStrategy -
지도에 노출되어야 하는 단말 마커의 속성을 나타내는 클래스.
See moreDeclaration
Objective-C
@interface NMCLeafMarkerInfo : NMCMarkerInfoSwift
class NMCLeafMarkerInfo : NMCMarkerInfo -
단말 마커의 정보를
NMFMarker의 속성에 반영해 갱신하는 델리게이트.단말 마커가 지도에 처음 노출되거나 정보가 변경되면
See moreupdateLeafMarker::메서드가 호출되며, 이 메서드로 전달되는NMFMarker가 화면에 노출됩니다. 따라서 이 메서드 내에서NMCLeafMarkerInfo의 정보를 가져와NMFMarker의 속성에 적절하게 반영하도록 구현해야 합니다. 단,NMFMarker의NMFMarker.position및NMFMarker.mapView속성은 자동으로 관리되므로 별도로 반영할 필요가 없습니다.Declaration
Objective-C
@protocol NMCLeafMarkerUpdaterSwift
protocol NMCLeafMarkerUpdater -
지도에 노출되어야 하는 마커의 속성을 나타내는 클래스. 이 클래스의 인스턴스는 불변이며 모든 스레드에서 안전하게 접근할 수 있습니다.
See moreDeclaration
Objective-C
@interface NMCMarkerInfo : NSObjectSwift
class NMCMarkerInfo : NSObject -
NMCClusterer가 관리하는 트리 구조의 노드를 의미하는 클래스.이 클래스의 인스턴스는 모든 스레드에서 접근 가능하고 불변인
See moreNMCMarkerInfo와 달리 백그라운드 스레드에서만 접근 가능하며 데이터가 변경되면 객체의 속성도 변경되므로 사용에 주의해야 합니다.Declaration
Objective-C
@interface NMCNode : NSObjectSwift
class NMCNode : NSObject -
한
cluster의 좌표를 정하는 전략에 대한 인터페이스.
See moreNMCNode가 하나의NMCCluster를 이루거나, 한NMCCluster의 자식 노드가 변경되면getPosition:메서드가 호출되며, 이 메서드에서 반환한 값이 이NMCCluster의 좌표가 됩니다. 따라서 이 메서드 내에서NMCCluster.tag또는NMCCluster.children을 호출해 태그나 자식 노드의 좌표 등 정보를 가져와 적절한 좌표를 반환하도록 구현해야 합니다.Declaration
Objective-C
@protocol NMCPositioningStrategySwift
protocol NMCPositioningStrategy -
부모
NMCCluster의 자식NMCNode들의 태그를 병합하는 전략에 대한 인터페이스.여러
See moreNMCNode가 하나의NMCCluster로 합쳐지면mergeTag:메서드가 호출되며, 이 메서드에서 반환한 값이 부모NMCCluster의 태그가 됩니다. 따라서 이 메서드 내에서NMCCluster.children을 호출해 자식NMCNode의 태그를 순회하고 병합해 반환하도록 구현해야 합니다.Declaration
Objective-C
@protocol NMCTagMergeStrategySwift
protocol NMCTagMergeStrategy -
두
NMCNode를 클러스터링할 기준 거리를 구하는 전략에 대한 인터페이스.이 전략은
NMCDistanceStrategy와 밀접하게 연관되어 있습니다. 두 노드node1,node2가 있을 때,NMCDistanceStrategy.getDistance:Node1:Node2가 반환한 둘 간의 거리가getThreshold:가 반환한 기준 거리보다 작거나 같으면 두 노드는zoom레벨에서 클러스터링됩니다.See moreSee
NMCThresholdStrategy.getThreshold:Declaration
Objective-C
@protocol NMCThresholdStrategySwift
protocol NMCThresholdStrategy
Install in Dash
Clustering Reference