readLabels method
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");
}