write method

Future<void> write(
  1. int instanceCount
)

Writes the complete map file structure to the file sink.

instanceCount is the number of parallel instances to use for tile processing.

Implementation

Future<void> write(int instanceCount) async {
  //createSubfiles();

  assert(subfiles.isNotEmpty);
  //    assert(poiTags.isNotEmpty || wayTags.isNotEmpty);

  List<String> languagesPreferences = [];
  if (mapHeaderInfo.languagesPreference != null) languagesPreferences.addAll(mapHeaderInfo.languagesPreference!.split(","));

  Writebuffer writebuffer = Writebuffer();
  _writePoiTags(writebuffer);
  _writeWayTags(writebuffer);

  MapfileHeaderWriter mapfileHeaderWriter = MapfileHeaderWriter(mapHeaderInfo);
  Writebuffer writebufferHeader = mapfileHeaderWriter.write(writebuffer.length + 1 + 19 * subfiles.length);

  // amount of zoom intervals
  writebuffer.appendInt1(subfiles.length);
  // this takes a looong time
  await _writeZoomIntervalConfiguration(writebuffer, writebufferHeader.length + writebuffer.length + 19 * subfiles.length, instanceCount);

  writebufferHeader.appendWritebuffer(writebuffer);
  writebufferHeader.writeToSink(_sink);
  writebuffer.clear();
  writebufferHeader.clear();

  for (Subfile subfile in subfiles) {
    // for each subfile, write the tile index header and entries
    Writebuffer writebuffer = subfile.writeTileIndex(mapHeaderInfo.debugFile);
    writebuffer.writeToSink(_sink);
    writebuffer.clear();
    await subfile.writeTiles(mapHeaderInfo.debugFile, _sink);
    subfile.dispose();
  }
}