#vector-tiles #wasm-module #mvt #pbf #rust

mvt-reader

A library for decoding and reading mapbox vector tiles in Rust and WebAssembly

17 releases (10 stable)

Uses new Rust 2024

2.0.1 Mar 9, 2025
1.8.0-alpha.2 Feb 24, 2025
1.6.0 Dec 14, 2024
1.5.0 Jul 21, 2024
1.1.0 Jun 20, 2023

#139 in WebAssembly

Download history 69/week @ 2024-11-30 32/week @ 2024-12-07 156/week @ 2024-12-14 5/week @ 2024-12-21 8/week @ 2024-12-28 9/week @ 2025-01-04 28/week @ 2025-01-11 58/week @ 2025-01-18 8/week @ 2025-01-25 6/week @ 2025-02-01 23/week @ 2025-02-08 292/week @ 2025-02-15 681/week @ 2025-02-22 157/week @ 2025-03-01 144/week @ 2025-03-08 68/week @ 2025-03-15

1,279 downloads per month

MIT license

31KB
468 lines

mvt-reader

Mapbox vector tile reader in Rust
A library for decoding and reading mapbox vector tiles in Rust and WebAssembly

Features

  • Decodes and reads Mapbox vector tiles in Rust
  • Provides an API for accessing layer names and features within a vector tile
  • Can be used as a WebAssembly module in JavaScript (enabled by the wasm feature)

Build the project

cargo build --release

Run tests

cargo test
wasm-pack build --release --target nodejs -d pkg/node -- --features wasm && npm test

Usage

To use the mvt-reader library in your Rust project, add the following to your Cargo.toml file:

[dependencies]
mvt-reader = "2.0.1"

Then, you can import and use the library in your code:

use mvt_reader::{Reader, ParserError};

fn main() -> Result<(), ParserError> {
  // Read a vector tile from file or data
  let data = vec![/* Vector tile data */];
  let reader = Reader::new(data)?;

  // Get layer names
  let layer_names = reader.get_layer_names()?;
  for name in layer_names {
    println!("Layer: {}", name);
  }

  // Get features for a specific layer
  let layer_index = 0;
  let features = reader.get_features(layer_index)?;
  for feature in features {
    todo!()
  }

  Ok(())
}

WebAssembly Usage

To use the mvt-reader library as a WebAssembly module in JavaScript, you can install it with npm and use it in your JavaScript code:

const { Reader } = require('mvt-reader')
const fs = require('fs')

// Example usage
const reader = new Reader(fs.readFileSync('path/to/tile.mvt'))
const layerNames = reader.getLayerNames()
console.log(layerNames)

// More code...

License

This project is licensed under the MIT License.

Dependencies

~1–3.5MB
~59K SLoC