         countLabel.font = UIFont.preferredFont(forTextStyle: .headline)
         addSubview(countLabel)
         
+        update()
+        self.annotation = annotation
+    }
+    
+    func update() {
+        if let articlePlace = annotation as? ArticlePlace {
+            if articlePlace.articles.count == 1 {
+                imageView.backgroundColor = UIColor.wmf_green()
+                let article = articlePlace.articles[0]
+                if let thumbnailURL = article.thumbnailURL, isSelected {
+                    imageView.wmf_setImage(with: thumbnailURL, detectFaces: true, onGPU: true, failure: { (error) in
+                        
+                    }, success: {
+                        
+                    })
+                } else {
+                    imageView.image = nil
+                }
+            } else {
+                imageView.backgroundColor = UIColor.wmf_green().withAlphaComponent(0.7)
+                countLabel.text = "\(articlePlace.articles.count)"
+            }
+        }
+        
         layoutSubviews()
-        self.annotation = annotation
     }
     
     override var annotation: MKAnnotation? {
         didSet {
-            if let articlePlace = annotation as? ArticlePlace {
-                if articlePlace.articles.count == 1 {
-                    let article = articlePlace.articles[0]
-                    if let thumbnailURL = article.thumbnailURL  {
-                        imageView.wmf_setImage(with: thumbnailURL, detectFaces: true, onGPU: true, failure: { (error) in
-                            
-                        }, success: {
-                            
-                        })
-                    }
-                } else {
-                    countLabel.text = "\(articlePlace.articles.count)"
-                }
-            }
+            update()
+        }
+    }
+    
+    override var isSelected: Bool {
+        didSet {
+            update()
         }
     }
     

    
    override func layoutSubviews() {
        super.layoutSubviews()
        imageView.frame = bounds
        imageView.layer.cornerRadius = frame.size.width * 0.5
        countLabel.frame = bounds
    }
}


        
        let deltaLat = mapView.region.span.latitudeDelta
        let lowestPrecision = QuadKeyPrecision(deltaLatitude: deltaLat)
        let groupingPrecision = min(QuadKeyPrecision.maxPrecision, lowestPrecision + 3)
        
        guard groupingPrecision != currentGroupingPrecision else {
            return
