processWays method

List<Way> processWays(
  1. QueryParameters queryParameters,
  2. int numberOfWays,
  3. BoundingBox boundingBox,
  4. bool filterRequired,
  5. double tileLatitude,
  6. double tileLongitude,
  7. MapfileSelector selector,
  8. Readbuffer readBuffer,
  9. MapDatastore mapDataStore,
)

Processes all ways from a data block in the given readBuffer.

This method iterates numberOfWays times, calling read1Way for each way and collecting the results.

Implementation

List<Way> processWays(
  QueryParameters queryParameters,
  int numberOfWays,
  BoundingBox boundingBox,
  bool filterRequired,
  double tileLatitude,
  double tileLongitude,
  MapfileSelector selector,
  Readbuffer readBuffer,
  MapDatastore mapDataStore,
) {
  List<Way> ways = [];
  List<Tag> wayTags = _mapFileHeader.getMapHeaderInfo().wayTags;

  BoundingBox wayFilterBbox = filterRequired
      ? boundingBox.extendMeters(queryParameters.queryZoomLevel > 20 ? wayFilterDistance ~/ 4 : wayFilterDistance)
      : boundingBox;

  for (int elementCounter = numberOfWays; elementCounter != 0; --elementCounter) {
    try {
      ways.addAll(read1Way(readBuffer, queryParameters, tileLatitude, tileLongitude, mapDataStore, wayTags, filterRequired, wayFilterBbox, selector));
    } catch (error, stacktrace) {
      print(error);
      print(stacktrace);
      // reset position to next way
      //readBuffer.setBufferPosition(pos + wayDataSize);
    }
  }

  return ways;
}