readPoiData method

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

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