Clustering

  • NMCClusterer를 생성하는 빌더 클래스. 클러스터링할 거리, 최소/최대 줌 레벨, 애니메이션 여부, 클러스터/단말 클러스터/단말 마커 커스터미이징 등 기본적인 기능을 제공합니다. 복잡한 전략과 기능이 필요하다면 NMCComplexBuilder를 사용해야 합니다.

    See more

    Declaration

    Objective-C

    
    @interface NMCBuilder<__covariant KeyType : NSObject <NMCClusteringKey> *>
        : NSObject

    Swift

    class NMCBuilder<KeyType> : NSObject where KeyType : NSObject, KeyType : NMCClusteringKey
  • 클러스터 노드를 의미하는 클래스.

    See more

    Declaration

    Objective-C

    
    @interface NMCCluster : NMCNode

    Swift

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

    NMCClusterer를 사용하려면 먼저 데이터의 키를 의미하는 NMCClusteringKey 프로토콜을 구현한 클래스를 정의해야 합니다. 이 클래스를 타입 파라메터로 지정해 NMCClusterer 인스턴스를 만들고, add:Tag: 또는 addAll:을 호출해 데이터를 추가한 후 mapView를 이용해 지도 객체를 지정하면 지정한 데이터가 클러스터링되어 나타납니다.

    See more

    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라면 다른 데이터로 간주합니다.

    이 특성을 이용해 동일한 좌표에 위치하는 여러 데이터를 중복해서 클러스터링할 수 있으므로 이 언터페이스를 구현하는 클래스는 NSObject.isEqual:NSObject.hash:도 구현하는 것이 권장됩니다.

    See more

    Declaration

    Objective-C

    @protocol NMCClusteringKey <NSObject, NSCopying>

    Swift

    protocol NMCClusteringKey : NSCopying, NSObjectProtocol
  • 지도에 노출되어야 하는 클러스터 마커의 속성을 나타내는 클래스.

    See more

    Declaration

    Objective-C

    
    @interface NMCClusterMarkerInfo : NMCMarkerInfo

    Swift

    class NMCClusterMarkerInfo : NMCMarkerInfo
  • 단말 마커의 정보를 NMFMarker의 속성에 반영해 갱신하는 델리게이트.

    단말 마커가 지도에 처음 노출되거나 정보가 변경되면 updateClusterMarker:: 메서드가 호출되며, 이 메서드로 전달되는 NMFMarker가 화면에 노출됩니다. 따라서 이 메서드 내에서 NMCClusterMarkerInfo의 정보를 가져와 NMFMarker의 속성에 적절하게 반영하도록 구현해야 합니다. 단, NMFMarkerNMFMarker.positionNMFMarker.mapView 속성은 자동으로 관리되므로 별도로 반영할 필요가 없습니다.

    See more

    Declaration

    Objective-C

    @protocol NMCClusterMarkerUpdater

    Swift

    protocol NMCClusterMarkerUpdater
  • 클러스터러의 데이터 갱신이 완료되면 호출되는 콜백 타입.

    Declaration

    Objective-C

    typedef void (^NMCClustererUpdateCallback)(void)

    Swift

    typealias NMCClustererUpdateCallback = () -> Void
  • NMCClusterer를 생성하는 빌더 클래스. 복잡한 전략과 기능을 제공합니다. 간단한 기능만 필요하다면 NMCBuilder를 사용하는 것을 권장합니다.

    See more

    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`): 클러스터가 펼쳐지는 최소 줌 레벨로 카메라를 확대하는 동작으로 지정됩니다.
    See more

    Declaration

    Objective-C

    
    @interface NMCDefaultClusterMarkerUpdater : NSObject <NMCClusterMarkerUpdater>

    Swift

    class NMCDefaultClusterMarkerUpdater : NSObject, NMCClusterMarkerUpdater
  • NMCDistanceStrategy 구현체. 두 NMCNode간의 화면상 거리를 측정합니다.

    See more

    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`로 지정되어 아무런 동작도 하지 않습니다.
    See more

    Declaration

    Objective-C

    
    @interface NMCDefaultLeafMarkerUpdater : NSObject <NMCLeafMarkerUpdater>

    Swift

    class NMCDefaultLeafMarkerUpdater : NSObject, NMCLeafMarkerUpdater
  • 기본 NMCMarkerManager 구현체. 이 클래스를 이용하면 NMFMarker 객체가 재사용되어 성능이 향상됩니다. 대신 한 번 사용되었던 NMFMarker 객체의 속성이 초기화되지 않고 계속 남으므로 NMCClusterMarkerUpdaterNMCLeafMarkerUpdater에서 매번 NMFMarker의 속성을 지정해야 합니다. 단, 변하지 않는 속성이 있다면 createMarker:를 오버라이드해 NMFMarker의 속성을 생성 직후 한 번만 지정하도록 최적화할 수 있습니다.

    See more

    Declaration

    Objective-C

    @interface NMCDefaultMarkerManager : NSObject <NMCMarkerManager>

    Swift

    class NMCDefaultMarkerManager : NSObject, NMCMarkerManager
  • 기본 NMCDefaultPositioningStrategy 구현체. 자식 노드의 좌표의 무게 중심을 구합니다.

    See more

    Declaration

    Objective-C

    
    @interface NMCDefaultPositioningStrategy : NSObject <NMCPositioningStrategy>

    Swift

    class NMCDefaultPositioningStrategy : NSObject, NMCPositioningStrategy
  • 기본 NMCDefaultTagMergeStrategy 구현체. 태그를 병합하지 않고 버립니다.

    See more

    Declaration

    Objective-C

    
    @interface NMCDefaultTagMergeStrategy : NSObject <NMCTagMergeStrategy>

    Swift

    class NMCDefaultTagMergeStrategy : NSObject, NMCTagMergeStrategy
  • 기본 NMCThresholdStrategy 구현체. 고정된 기준 거리를 사용합니다.

    See more

    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:
    See more

    Declaration

    Objective-C

    @protocol NMCDistanceStrategy

    Swift

    protocol NMCDistanceStrategy
  • 단말 노드를 의미하는 클래스.

    See more

    Declaration

    Objective-C

    
    @interface NMCLeaf : NMCNode

    Swift

    class NMCLeaf : NMCNode
  • 지도에 노출되어야 하는 단말 마커의 속성을 나타내는 클래스.

    See more

    Declaration

    Objective-C

    
    @interface NMCLeafMarkerInfo : NMCMarkerInfo

    Swift

    class NMCLeafMarkerInfo : NMCMarkerInfo
  • 단말 마커의 정보를 NMFMarker의 속성에 반영해 갱신하는 델리게이트.

    단말 마커가 지도에 처음 노출되거나 정보가 변경되면 updateLeafMarker:: 메서드가 호출되며, 이 메서드로 전달되는 NMFMarker가 화면에 노출됩니다. 따라서 이 메서드 내에서 NMCLeafMarkerInfo의 정보를 가져와 NMFMarker의 속성에 적절하게 반영하도록 구현해야 합니다. 단, NMFMarkerNMFMarker.positionNMFMarker.mapView 속성은 자동으로 관리되므로 별도로 반영할 필요가 없습니다.

    See more

    Declaration

    Objective-C

    @protocol NMCLeafMarkerUpdater

    Swift

    protocol NMCLeafMarkerUpdater
  • 지도에 노출되어야 하는 마커의 속성을 나타내는 클래스. 이 클래스의 인스턴스는 불변이며 모든 스레드에서 안전하게 접근할 수 있습니다.

    See more

    Declaration

    Objective-C

    
    @interface NMCMarkerInfo : NSObject

    Swift

    class NMCMarkerInfo : NSObject
  • NMCClusterer가 관리하는 트리 구조의 노드를 의미하는 클래스.

    이 클래스의 인스턴스는 모든 스레드에서 접근 가능하고 불변인 NMCMarkerInfo와 달리 백그라운드 스레드에서만 접근 가능하며 데이터가 변경되면 객체의 속성도 변경되므로 사용에 주의해야 합니다.

    See more

    Declaration

    Objective-C

    
    @interface NMCNode : NSObject

    Swift

    class NMCNode : NSObject
  • cluster의 좌표를 정하는 전략에 대한 인터페이스.

    NMCNode가 하나의 NMCCluster를 이루거나, 한 NMCCluster의 자식 노드가 변경되면 getPosition: 메서드가 호출되며, 이 메서드에서 반환한 값이 이 NMCCluster의 좌표가 됩니다. 따라서 이 메서드 내에서 NMCCluster.tag 또는 NMCCluster.children을 호출해 태그나 자식 노드의 좌표 등 정보를 가져와 적절한 좌표를 반환하도록 구현해야 합니다.

    See more

    Declaration

    Objective-C

    @protocol NMCPositioningStrategy

    Swift

    protocol NMCPositioningStrategy
  • 부모 NMCCluster의 자식 NMCNode들의 태그를 병합하는 전략에 대한 인터페이스.

    여러 NMCNode가 하나의 NMCCluster로 합쳐지면 mergeTag: 메서드가 호출되며, 이 메서드에서 반환한 값이 부모 NMCCluster의 태그가 됩니다. 따라서 이 메서드 내에서 NMCCluster.children을 호출해 자식 NMCNode의 태그를 순회하고 병합해 반환하도록 구현해야 합니다.

    See more

    Declaration

    Objective-C

    @protocol NMCTagMergeStrategy

    Swift

    protocol NMCTagMergeStrategy
  • NMCNode를 클러스터링할 기준 거리를 구하는 전략에 대한 인터페이스.

    이 전략은NMCDistanceStrategy와 밀접하게 연관되어 있습니다. 두 노드 node1, node2가 있을 때, NMCDistanceStrategy.getDistance:Node1:Node2가 반환한 둘 간의 거리가 getThreshold:가 반환한 기준 거리보다 작거나 같으면 두 노드는zoom 레벨에서 클러스터링됩니다.

    See

    NMCThresholdStrategy.getThreshold:
    See more

    Declaration

    Objective-C

    @protocol NMCThresholdStrategy

    Swift

    protocol NMCThresholdStrategy