ZCluster<T extends Clusterable> constructor

ZCluster<T extends Clusterable>({
  1. required int minZoom,
  2. required int maxZoom,
  3. required int radius,
  4. required int extent,
  5. required int nodeSize,
  6. dynamic points,
  7. dynamic createCluster,
})

Implementation

ZCluster({
  required this.minZoom,
  required this.maxZoom,
  required this.radius,
  required this.extent,
  required this.nodeSize,
  points,
  createCluster,
})  : _points = points,
      _trees = List.filled(maxZoom + 2, null),
      _createCluster = createCluster {
  var clusters = <BaseCluster>[];

  for (var i = 0; i < _points.length; i++) {
    if (_points[i].latitude == null || _points[i].longitude == null) {
      continue;
    }

    clusters.add(_createPointCluster(_points[i], i));
  }

  _trees[maxZoom + 1] = KDBush(
    points: clusters,
    nodeSize: nodeSize,
  );

  for (var z = maxZoom; z >= minZoom; z--) {
    clusters = _buildClusters(clusters, z);

    _trees[z] = KDBush(points: clusters, nodeSize: nodeSize);
  }
}