0.0.9 • Published 4 years ago

polyline-encoded v0.0.9

Weekly downloads
5,484
License
MIT
Repository
github
Last release
4 years ago

Support encoded polylines in Leaflet

This Leaflet plugin extends Leaflet with functions to encode to and decode from Google maps polyline encoding.

Escaping backslashes

Make sure to always escape the backslashes in encoded strings! Not doing so will result in the backslash to be interpreted as an escape character, yielding wrong results.

API

Utility methods

  • L.PolylineUtil.encode(latlngs [, precision])

    Encode an array of L.LatLng objects, or an array of arrays.

  • L.PolylineUtil.decode(encoded [, precision])

    Decode the string encoded to an array of [lat, lng]-arrays.

Extensions for L.Polyline

  • L.Polyline.fromEncoded(encoded [, options])

    Construct a new L.Polyline from a string, with optional options object. Backslashes in strings should be properly escaped.

  • L.Polyline.encodePath()

    Return an encoded string for the current Polyline.

Extensions for L.Polygon

  • L.Polygon.fromEncoded(encoded [, options])

    Construct a new L.Polygon from a string, with optional options object. Backslashes in strings should be properly escaped.

  • L.Polygon.encodePath()

    Return an encoded string for the current Polygon.

Code examples

After loading leaflet.js, src/Polyline.encoded.js should be included.

Encoding

var latlngs = [
	[38.5, -120.5],
	[40.7, -120.95],
	[43.252, -126.453]
];
var polyline = L.polyline(latlngs);

// prints "_p~iF~cn~U_ulLn{vA_mqNvxq`@" to the console
console.log(polyline.encodePath());

Decoding

var encoded = "_p~iF~cn~U_ulLn{vA_mqNvxq`@";
var polyline = L.Polyline.fromEncoded(encoded);

// prints an array of 3 LatLng objects.
console.log(polyline.getLatLngs());

Use a decoding precision of 5 to decode OSRM Routing Engine geometries

var encoded = "_izlhA~pvydF_{geC~{mZ_kwzCn`{nI";
var polyline = L.polyline(L.PolylineUtil.decode(encoded, 5));

// prints an array of 3 LatLng objects.
console.log(polyline.getLatLngs());

Node package

You can use encode() and decode() in your Nodejs scripts:

npm install polyline-encoded

var polyUtil = require('polyline-encoded');

var encoded = "_p~iF~cn~U_ulLn{vA_mqNvxq`@";
var latlngs = polyUtil.decode(encoded);