Skip to content

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

License

Notifications You must be signed in to change notification settings

codeart1st/mvt-reader

This branch is up to date with main.

Folders and files

NameName
Last commit message
Last commit date

Latest commit

2a9689a · Feb 21, 2025
Feb 20, 2025
Mar 19, 2023
Feb 21, 2025
Feb 21, 2025
Mar 19, 2023
May 26, 2023
Mar 19, 2023
Feb 21, 2025
Feb 21, 2025
Mar 19, 2023
Feb 21, 2025
Mar 19, 2023
Feb 21, 2025
Feb 21, 2025
Feb 21, 2025
Mar 19, 2023

Repository files navigation

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 = "1.7.0"

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.