Как получить количество маркеров, видимых на MKMapView? - PullRequest
0 голосов
/ 26 февраля 2020

Я использую этот код:

let annotationsInVisibleMapRect = self.mapView.annotations(in: mapView.visibleMapRect)
    let count = annotationsInVisibleMapRect.reduce(0) { (count, object) -> Int in
        if let cluster = object as? MKClusterAnnotation {
            if let view = self.mapView.view(for: cluster), !view.isHidden {
                return count + cluster.memberAnnotations.count
            }
        } else if let annotation = object as? MKCustomAnnotation {
            if let view = self.mapView.view(for: annotation), !view.isHidden {
                return count + 1
            }
        }
    }

Но этот код работает неправильно. Иногда я вижу кластер на карте, но эта строка

, если let view = self.mapView.view (для: кластера),! View.isHidden ...

дает isHidden равно true . В результате я ошибаюсь в подсчете.

1 Ответ

0 голосов
/ 26 февраля 2020
mapView.annotations.filter({ self.mapView.visibleMapRect.contains(MKMapPoint($0.coordinate)) }).count

Проверено, у меня работает :) 1002 *

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...