Warning: file_get_contents(/data/phpspider/zhask/data//catemap/8/vim/5.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Swift 如何获取MKMapView上可见的标记数?_Swift_Mapkit - Fatal编程技术网

Swift 如何获取MKMapView上可见的标记数?

Swift 如何获取MKMapView上可见的标记数?,swift,mapkit,Swift,Mapkit,我正在使用以下代码: let annotationsInVisibleMapRect = self.mapView.annotations(in: mapView.visibleMapRect) let count = annotationsInVisibleMapRect.reduce(0) { (count, object) -> Int in if let cluster = object as? MKClusterAnnotation {

我正在使用以下代码:

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(对于:集群)!视图。isHidden

给出的值等于真值。 结果我数错了

mapView.annotations.filter({ self.mapView.visibleMapRect.contains(MKMapPoint($0.coordinate)) }).count

经过测试,为我工作:)

您的过滤器不适合我。我在地图上添加了161个标记。mapView.annotations.count返回了212个计数。mapView.annotations.filter({mapView.visibleMapRect.contains(MKMapPoint($0.coordinate))})。计数返回193计数。但是地图上的实际可见计数是145,2个簇(137)和(7)以及1个标记。@YuraPetrov您可以保存标记并使用self.mapView.visibleMapRect.contains(MKMapPoint(marker.coordinate)),我没有更清晰的解决方案,抱歉:(我尝试使用“contains”方法,但它也不正确。标记可以容纳在集群中,此集群可以有其他协调器,然后标记,例如,集群可以位于左侧,在visible maprect之外,但标记在visible maprect中,用户将看到错误的标记计数。无论如何,感谢您的建议。