2016-10-22 15 views
1

私はFBAnnotationClusteringココアポッドライブラリを私のアプリケーションで使用してクラスタリングを行っています。このremoveAllAnnotationのメソッドは、Objective-Cでしか利用できませんが、迅速には使用できません。3.私は、私のような他の人を助けるために、迅速なバージョンを投稿しています。私の下の答えを見てください。FBAnnotationClusteringすぐに注釈を削除する

答えて

1

FBClusteringManager.swift:

open func removeAnnotations() { 
    if tree == nil { 
     return 
    } 
    lock.lock() 
    for annotation: MKAnnotation in allAnnotations() { 
     tree!.remove(annotation) 
    } 
    lock.unlock() 
} 

FBQuadTree.swift

func remove(_ annotation: MKAnnotation) -> Bool { 
    return self.remove(annotation, from: rootNode!) 
} 

func remove(_ annotation: MKAnnotation, from node: FBQuadTreeNode) -> Bool { 

    if !FBQuadTreeNode.FBBoundingBoxContainsCoordinate(node.boundingBox!, coordinate: annotation.coordinate) { 
     return false 
    } 

    do { 
     if let index = node.annotations.index(where: {self.equate(lhs: $0, rhs: annotation)}) { 
      node.annotations.remove(at: index) 
      node.count -= 1 
     } 
    } catch { 
     return false 
    } 

    if let northEast = node.northEast { 
     if self.remove(annotation, from: northEast) { 
      return true 
     } 
    } 

    if let northWest = node.northWest { 
     if self.remove(annotation, from: northWest) { 
      return true 
     } 
    } 

    if let southEast = node.southEast { 
     if self.remove(annotation, from: southEast) { 
      return true 
     } 
    } 

    if let southWest = node.southWest { 
     if self.remove(annotation, from: southWest) { 
      return true 
     } 
    } 

    return false 
} 

func equate(lhs: MKAnnotation, rhs: MKAnnotation) -> Bool{ 
    return lhs.coordinate.latitude == rhs.coordinate.latitude 
     && lhs.coordinate.longitude == rhs.coordinate.longitude 

} 
+0

uは全体libが.zipファイルだろうか? – yerpy

関連する問題