Rolyrine (rolyrine v0.1.3)
Copy MarkdownFast polyline encoding/decoding using Rust NIFs.
Implements Google's Polyline Algorithm Format with flexible coordinate formats.
Supported Coordinate Formats
| Format | Example |
|---|---|
{lon, lat} tuples | [{-120.2, 38.5}, ...] |
%{longitude:, latitude:} | [%{longitude: -120.2, latitude: 38.5}, ...] |
%{lon:, lat:} | [%{lon: -120.2, lat: 38.5}, ...] |
%{lng:, lat:} | [%{lng: -120.2, lat: 38.5}, ...] |
%{x:, y:} | [%{x: -120.2, y: 38.5}, ...] |
Examples
iex> Rolyrine.encode([{-120.2, 38.5}, {-120.95, 40.7}])
"_p~iF~ps|U_ulLnnqC"
iex> Rolyrine.decode("_p~iF~ps|U_ulLnnqC")
[{-120.2, 38.5}, {-120.95, 40.7}]
iex> Rolyrine.decode("_p~iF~ps|U_ulLnnqC", format: :longitude_latitude)
[%{longitude: -120.2, latitude: 38.5}, %{longitude: -120.95, latitude: 40.7}]
Summary
Functions
Decode a polyline string into a list of coordinates.
Encode a list of coordinates into a polyline string.
Functions
Decode a polyline string into a list of coordinates.
Options
:precision- decimal precision (default: 5):format- output format (default::tuple):tuple-[{lon, lat}, ...]:tuple_reversed-[{lat, lon}, ...]:longitude_latitude-[%{longitude: lon, latitude: lat}, ...]:lon_lat-[%{lon: lon, lat: lat}, ...]:lng_lat-[%{lng: lon, lat: lat}, ...]:xy-[%{x: lon, y: lat}, ...]
Examples
iex> Rolyrine.decode("_p~iF~ps|U_ulLnnqC")
[{-120.2, 38.5}, {-120.95, 40.7}]
iex> Rolyrine.decode("_p~iF~ps|U_ulLnnqC", format: :lon_lat)
[%{lon: -120.2, lat: 38.5}, %{lon: -120.95, lat: 40.7}]
iex> Rolyrine.decode("_izlhA~rlgdF_{geC~ywl@", precision: 6)
[{-120.2, 38.5}, {-120.95, 40.7}]
Encode a list of coordinates into a polyline string.
Accepts multiple coordinate formats - auto-detected from first element.
Options
:precision- decimal precision (default: 5)
Examples
iex> Rolyrine.encode([{-120.2, 38.5}, {-120.95, 40.7}])
"_p~iF~ps|U_ulLnnqC"
iex> Rolyrine.encode([%{longitude: -120.2, latitude: 38.5}, %{longitude: -120.95, latitude: 40.7}])
"_p~iF~ps|U_ulLnnqC"
iex> Rolyrine.encode([{-120.2, 38.5}, {-120.95, 40.7}], precision: 6)
"_izlhA~rlgdF_{geC~ywl@"