readLabels method

  1. @override
Future<DatastoreBundle?> readLabels(
  1. Tile upperLeft,
  2. Tile lowerRight
)

Reads label data for a rectangular area defined by two corner tiles.

Default implementations typically combine results from individual tiles, which may be inefficient for large areas.

Precondition: upperLeft.tileX <= lowerRight.tileX && upperLeft.tileY <= lowerRight.tileY

upperLeft Upper-left corner tile of the requested area lowerRight Lower-right corner tile of the requested area Returns combined label data for the area

Implementation

@override
Future<DatastoreBundle?> readLabels(Tile upperLeft, Tile lowerRight) async {
  switch (dataPolicy) {
    case DataPolicy.RETURN_FIRST:
      for (Datastore mdb in List.from(datastores)) {
        if (_datastoreIntersectsTile(mdb, upperLeft) && (await mdb.supportsTile(upperLeft))) {
          return mdb.readLabels(upperLeft, lowerRight);
        }
      }
      return null;
    case DataPolicy.RETURN_ALL:
      return _readLabels(upperLeft, lowerRight, false);
    case DataPolicy.DEDUPLICATE:
      return _readLabels(upperLeft, lowerRight, true);
  }
  //throw new Exception("Invalid data policy for multi map database");
}