Home

Awesome

Test and Build Coverage Status

FFI Bindings for the rust-polyline Crate

A Python implementation using these bindings is available at pypolyline

A Note on Coordinate Order

This crate uses Coordinate and LineString types from the geo-types crate, which encodes coordinates in (x, y) order. The Polyline algorithm and first-party documentation assumes the opposite coordinate order. It is thus advisable to pay careful attention to the order of the coordinates you use for encoding and decoding.

decode_polyline_ffi

Convert a Polyline into an array of coordinates.
Callers must pass two arguments:

Returns an Array struct with two fields:

Callers must then call drop_float_array to free the memory allocated by this function.

drop_float_array

Free memory pointed to by Array, which Rust has allocated across the FFI boundary.
Callers must pass the same Array struct that was received from decode_polyline_ffi.

encode_coordinates_ffi

Convert coordinates into a Polyline.
Callers must pass a struct, with two members:

Returns a pointer to a C character array (char*).
Callers must then call drop_cstring to free the memory allocated by this function.

drop_cstring

Free memory pointed to by char*, which Rust has allocated across the FFI boundary.
Callers must pass the same char* they receive from encode_coordinates_ffi.

Binaries

Compressed binaries are available for Linux (64-bit), OSX (64-bit), and Windows (32-bit and 64-bit), from the releases page.
The Linux binary has been built using the manylinux2014 Docker image, and is widely compatible.
Both Linux and OSX binaries have been built with rpath support.

License

MIT