This Leaflet plugin extends the Leaflet API with functions to encode en decode Google maps polyline encoding. It is just a convenient way to use the algorithm from http://facstaff.unca.edu/mcmcclur/GoogleMaps/EncodePolyline/ in Leaflet.
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 L.Polyline from a string, with optional options object. |
L.Polyline.encodePath() | Return an encoded string for the current Polyline. |
Extensions for L.Polygon |
|
L.Polygon.fromEncoded(encoded [, options]) |
Construct a L.Polygon from a string, with optional options object. |
L.Polygon.encodePath() | Return an encoded string for the current Polygon. |
After loading leaflet.js
, src/Polyline.encoded.js
should be included.
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());
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 6 to decode OSRM Routing Engine geometries
var encoded = "_izlhA~pvydF_{geC~{mZ_kwzCn`{nI";
var polyline = new L.Polyline(PolylineUtil.decode(encoded, 6));
// prints an array of 3 LatLng objects.
console.log(polyline.getLatLngs());
You can use encode()
and decode()
in your Nodejs scripts:
npm install polyline-encoded
var polylineEncoded = require('polyline-encoded');
var encoded = "_p~iF~cn~U_ulLn{vA_mqNvxq`@";
var latlngs = polylineEncoded.decode(encoded);