Expand description

This crate provides forward– and reverse-geocoding functionality for Rust. Over time, a variety of providers will be added. Each provider may implement one or both of the Forward and Reverse traits, which provide forward– and reverse-geocoding methods.

Note that for the reverse method, the return type is simply Option<String>, as this is the lowest common denominator reverse-geocoding result. Individual providers may implement additional methods, which return more finely-structured and/or extensive data, and enable more specific query tuning. Coordinate data are specified using the Point struct, which has several convenient From implementations to allow for easy construction using primitive types.

A note on Coordinate Order

While individual providers may specify coordinates in either [Longitude, Latitude] or [Latitude, Longitude] order, Geocoding always requires Point data in [Longitude, Latitude] (x, y) order, and returns data in that order.

Usage of rustls

If you like to use rustls instead of OpenSSL you can enable the rustls-tls feature in your Cargo.toml:

geocoding = { version = "*", default-features = false, features = ["rustls-tls"] }


pub use crate::opencage::Opencage;
pub use crate::openstreetmap::Openstreetmap;
pub use crate::geoadmin::GeoAdmin;


The GeoAdmin provider for geocoding in Switzerland exclusively.


A lightweight struct used to store coordinates on the 2-dimensional Cartesian plane.

Used to specify a bounding box to search within when forward-geocoding

A single point in 2D space.


Errors that can occur during geocoding operations


Forward-geocode a coordinate.

Reverse-geocode a coordinate.