计算视图中 GMSCircles 的数量 Google Maps SDK...或者改用 MarkerManager? iOS 是否存在?

Count Number of GMSCircles in View Google Maps SDK...or use MarkerManager Instead? Does this exist for iOS?

我正在尝试计算 iOS Swift 中用户当前视图中的 GMSCircles 数量。例如,当用户放大或缩小时,我希望它计算当前屏幕上的圆圈数。我现在有类似的东西可以将我所有的圈子附加到屏幕上...

 var circleCenter = CLLocationCoordinate2DMake(latitude, longitude);
 circle.append(GMSCircle(position: circleCenter, radius: 1))
 circle[index].fillColor = UIColor(red: 0.35, green: 0, blue: 0, alpha: 0.05)
 circle[index].strokeColor = UIColor.redColor()
 circle[index].strokeWidth = 10
 circle[index].map = self.mapView;

我在 java 中看到有一个用于标记的 MarkerManager(与我知道的圆圈不同),您可以在其中计算视图中标记的数量,如下所示:

count markers displayed on map after zoom in and out

但我找不到 Swift 的 MarkerManager 之类的东西。有人能指出我正确的方向吗...我想使用 'circles'...但我认为即使在 java 中也可能很难做到。 iOS 是否有类似 MarkerManager 的东西,我可以用它来计算标记而不是圆圈?任何帮助都会非常好,谢谢。

我认为没有明确的方法,但您可以调用 [cameraForBounds][1] 来获取视口的边界坐标。这样,您就可以检查是否有任何 circleCenter 落在视口的范围内。

这就是我想做的事情。使用名为 longitudeCollection 的 class 级别数组而不是使用 GMSCircles

    var visibleRegion : GMSVisibleRegion = mapView.projection.visibleRegion()
    var bounds = GMSCoordinateBounds(coordinate: visibleRegion.nearLeft, coordinate: visibleRegion.farRight)

    var numberOfCirclesInBounds = 0

    for var index = 0; index<=longitudeCollection.count-1; index++ {

        var foo = longitudeCollection[index].coordinateValue
        var bar = latitudeCollection[index].coordinateValue

        var circleCenter = CLLocationCoordinate2DMake(bar, foo);

        if bounds.containsCoordinate(circleCenter) {
            numberOfCirclesInBounds++
        }