I am using FBAnnotationClustering
cocoa pod library in my application to do the clustering. In this removeAllAnnotation
method is only available in Objective-C but not in swift 3. So I am posting the swift version to help others like me. Please see my own answer below.
Asked
Active
Viewed 330 times
1

Saranya
- 163
- 2
- 10
1 Answers
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
}

Saranya
- 163
- 2
- 10
-
could u .zip whole lib ? – yerpy May 01 '17 at 07:04