- Tilelive is a module to help interactions between tilelive source modules.
- A tilelive source is an interface implemented by node modules that deal with reading and writing map tiles.
Tilelive doesn't ship with any implementing modules by default. To register a module as one tilelive recognizes:
require('[implementation]').registerProtocols(tilelive);
tilelive.list(source, callback): Lists all tilesets in a directory.sourceis a folder that is used by registered implementations to search for individual tilesets.callbackreceives an error object (ornull) and a hash hash with keys being Tilestore IDs and values being Tilestore URIs. Example:
{
"world-light": "mbtiles:///path/to/file/world-light.mbtiles",
"mapquest": "tilejson:///path/to/file/mapquest.tilejson"
}-
tilelive.findID(source, id, callback): Looks for a particular tileset ID in a directory.callbackreceives an error object (ornull) and the URI of the tileset. -
tilelive.load(uri, callback): Loads the Tilestore object associated with the specifieduri.callbackreceives an error object (ornull) and the Tilestore object. -
tilelive.info(uri, callback): Loads the Tilestore object associated with the specifieduriand retrieves its metadata in a TileJSON compliant format.callbackreceives an error object (ornull), the metadata hash and the Tilestore object. -
tilelive.all(source, callback): Loads metadata in a TileJSON compliant format for all tilesets in thesourcedirectory.callbackreceives an error object (ornull) and an array with TileJSON metadata about each tileset in that directory. -
tilelive.verify(tilejson): Validates a TileJSON object and returns error objects for invalid entries.
Tilelive provides an implementation of node object streams for copying tiles from one source to another.
// Copy all tiles and metadata from source A to source B.
var get = tilelive.createReadStream(sourceA);
var put = tilelive.createWriteStream(sourceB);
get.pipe(put);
put.on('finish', function() {
console.log('done!');
});
See tilelive-copy and the streams tests for example usage of copy streams.
Tilelive can split a read operation into an arbitrary number of jobs. Pass a job parameter to options when using tilelive.createReadStream or tilelive.deserialize:
var readable = tilelive.createReadStream(src, { type: 'scanline', job: { total: 4, num: 1 } });This instructs tilelive to only read tiles that would fall into job 1 of 4. A complete read would mean four calls each with a different num.
tilelive can be used to copy data between tilestores. For a full list of options, run tilelive-copy.
To run the tests
npm test