| Crates.io | maidenhead |
| lib.rs | maidenhead |
| version | 0.2.1 |
| created_at | 2022-08-29 18:48:31.101333+00 |
| updated_at | 2025-12-03 19:44:41.7198+00 |
| description | A simple package to convert to/from maidenhead squares to latitude/longitude |
| homepage | |
| repository | https://github.com/olofj/maidenhead |
| max_upload_size | |
| id | 654716 |
| size | 27,783 |
A simple Rust library for converting between Maidenhead grid squares and latitude/longitude coordinates.
Maidenhead grid squares are a coordinate system used by amateur radio operators to specify locations on Earth. This library provides functions to convert between grid squares and decimal degree coordinates, as well as calculate distances and bearings between grid squares.
Add this to your Cargo.toml:
[dependencies]
maidenhead = "0.2.1"
use maidenhead::*;
// Convert grid square to coordinates
let (longitude, latitude) = grid_to_longlat("FM18lv")?;
println!("Coordinates: {}, {}", longitude, latitude);
// Convert coordinates to grid square
let grid = longlat_to_grid(-77.035278, 38.889484, 6)?;
println!("Grid square: {}", grid);
// Calculate distance between two grid squares
let distance = grid_distance("FM18lv", "EN91")?;
println!("Distance: {:.2} km", distance);
// Calculate bearing between two grid squares
let bearing = grid_bearing("FM18lv", "EN91")?;
println!("Bearing: {:.1}°", bearing);
// Calculate both distance and bearing
let (distance, bearing) = grid_dist_bearing("FM18lv", "EN91")?;
println!("Distance: {:.2} km, Bearing: {:.1}°", distance, bearing);
Grid squares follow the format: FFSSssEEee where:
Supported precisions: 4, 6, 8, or 10 characters.
The library uses the thiserror crate for comprehensive error handling:
InvalidGrid: Invalid grid square formatInvalidGridLength: Unsupported grid square lengthInvalidLongLat: Coordinates out of valid rangeUnknown: Internal error during grid generationLicensed under the Apache License, Version 2.0. See LICENSE for details.