Clustering
-
See moreNMCClusterer
를 생성하는 빌더 클래스. 클러스터링할 거리, 최소/최대 줌 레벨, 애니메이션 여부, 클러스터/단말 클러스터/단말 마커 커스터미이징 등 기본적인 기능을 제공합니다. 복잡한 전략과 기능이 필요하다면NMCComplexBuilder
를 사용해야 합니다.Declaration
Objective-C
@interface NMCBuilder<__covariant KeyType : NSObject <NMCClusteringKey> *> : NSObject
Swift
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> *> : NSObject
Swift
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 : NMCMarkerInfo
Swift
class NMCClusterMarkerInfo : NMCMarkerInfo
-
단말 마커의 정보를
NMFMarker
의 속성에 반영해 갱신하는 델리게이트.단말 마커가 지도에 처음 노출되거나 정보가 변경되면
See moreupdateClusterMarker::
메서드가 호출되며, 이 메서드로 전달되는NMFMarker
가 화면에 노출됩니다. 따라서 이 메서드 내에서NMCClusterMarkerInfo
의 정보를 가져와NMFMarker
의 속성에 적절하게 반영하도록 구현해야 합니다. 단,NMFMarker
의NMFMarker.position
및NMFMarker.mapView
속성은 자동으로 관리되므로 별도로 반영할 필요가 없습니다.Declaration
Objective-C
@protocol NMCClusterMarkerUpdater
Swift
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> *> : NSObject
Swift
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
NMCThresholdStrategy.getThreshold:
Declaration
Objective-C
@protocol NMCDistanceStrategy
Swift
protocol NMCDistanceStrategy
-
지도에 노출되어야 하는 단말 마커의 속성을 나타내는 클래스.
See moreDeclaration
Objective-C
@interface NMCLeafMarkerInfo : NMCMarkerInfo
Swift
class NMCLeafMarkerInfo : NMCMarkerInfo
-
단말 마커의 정보를
NMFMarker
의 속성에 반영해 갱신하는 델리게이트.단말 마커가 지도에 처음 노출되거나 정보가 변경되면
See moreupdateLeafMarker::
메서드가 호출되며, 이 메서드로 전달되는NMFMarker
가 화면에 노출됩니다. 따라서 이 메서드 내에서NMCLeafMarkerInfo
의 정보를 가져와NMFMarker
의 속성에 적절하게 반영하도록 구현해야 합니다. 단,NMFMarker
의NMFMarker.position
및NMFMarker.mapView
속성은 자동으로 관리되므로 별도로 반영할 필요가 없습니다.Declaration
Objective-C
@protocol NMCLeafMarkerUpdater
Swift
protocol NMCLeafMarkerUpdater
-
지도에 노출되어야 하는 마커의 속성을 나타내는 클래스. 이 클래스의 인스턴스는 불변이며 모든 스레드에서 안전하게 접근할 수 있습니다.
See moreDeclaration
Objective-C
@interface NMCMarkerInfo : NSObject
Swift
class NMCMarkerInfo : NSObject
-
NMCClusterer
가 관리하는 트리 구조의 노드를 의미하는 클래스.이 클래스의 인스턴스는 모든 스레드에서 접근 가능하고 불변인
See moreNMCMarkerInfo
와 달리 백그라운드 스레드에서만 접근 가능하며 데이터가 변경되면 객체의 속성도 변경되므로 사용에 주의해야 합니다.Declaration
Objective-C
@interface NMCNode : NSObject
Swift
class NMCNode : NSObject
-
한
cluster
의 좌표를 정하는 전략에 대한 인터페이스.
See moreNMCNode
가 하나의NMCCluster
를 이루거나, 한NMCCluster
의 자식 노드가 변경되면getPosition:
메서드가 호출되며, 이 메서드에서 반환한 값이 이NMCCluster
의 좌표가 됩니다. 따라서 이 메서드 내에서NMCCluster.tag
또는NMCCluster.children
을 호출해 태그나 자식 노드의 좌표 등 정보를 가져와 적절한 좌표를 반환하도록 구현해야 합니다.Declaration
Objective-C
@protocol NMCPositioningStrategy
Swift
protocol NMCPositioningStrategy
-
부모
NMCCluster
의 자식NMCNode
들의 태그를 병합하는 전략에 대한 인터페이스.여러
See moreNMCNode
가 하나의NMCCluster
로 합쳐지면mergeTag:
메서드가 호출되며, 이 메서드에서 반환한 값이 부모NMCCluster
의 태그가 됩니다. 따라서 이 메서드 내에서NMCCluster.children
을 호출해 자식NMCNode
의 태그를 순회하고 병합해 반환하도록 구현해야 합니다.Declaration
Objective-C
@protocol NMCTagMergeStrategy
Swift
protocol NMCTagMergeStrategy
-
두
NMCNode
를 클러스터링할 기준 거리를 구하는 전략에 대한 인터페이스.이 전략은
NMCDistanceStrategy
와 밀접하게 연관되어 있습니다. 두 노드node1
,node2
가 있을 때,NMCDistanceStrategy.getDistance:Node1:Node2
가 반환한 둘 간의 거리가getThreshold:
가 반환한 기준 거리보다 작거나 같으면 두 노드는zoom
레벨에서 클러스터링됩니다.See
NMCThresholdStrategy.getThreshold:
Declaration
Objective-C
@protocol NMCThresholdStrategy
Swift
protocol NMCThresholdStrategy