readPoiData method
Reads POI data for a rectangular area defined by corner tiles.
Combines POI data from all tiles within the specified area.
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 POI data for the area
Implementation
@override
Future<DatastoreBundle?> readPoiData(Tile upperLeft, Tile lowerRight) async {
switch (dataPolicy) {
case DataPolicy.RETURN_FIRST:
for (Datastore mdb in datastores) {
if (_datastoreIntersectsTile(mdb, upperLeft) && (await mdb.supportsTile(upperLeft))) {
return mdb.readPoiData(upperLeft, lowerRight);
}
}
return null;
case DataPolicy.RETURN_ALL:
return _readPoiDataDedup(upperLeft, lowerRight, false);
case DataPolicy.DEDUPLICATE:
return _readPoiDataDedup(upperLeft, lowerRight, true);
}
//throw new Exception("Invalid data policy for multi map database");
}