12345678910111213141516171819202122232425262728293031323334353637383940414243444546474849 |
- /*
- * Extends L.Polyline to retrieve measured distance.
- *
- * https://github.com/danimt/Leaflet.PolylineMeasuredDistance
- */
- L.Polyline.prototype.measuredDistance = function (options) {
- // Default options
- this.defaults = {
- metric: true
- };
- // Extend options
- this.options = L.extend(this.defaults, options);
- var distance = 0, coords = null, coordsArray = this._latlngs;
- for (i = 0; i < coordsArray.length - 1; i++) {
- coords = coordsArray[i];
- distance += coords.distanceTo(coordsArray[i + 1]);
- }
- // Return formatted distance
- return L.PolylineUtil.readableDistance(distance, this.options.metric);
- };
- L.PolylineUtil = {
- readableDistance: function (distance, isMetric) {
- var distanceStr;
- if (isMetric) {
- // show metres when distance is < 1km, then show km
- if (distance > 1000) {
- distanceStr = (distance / 1000).toFixed(2) + ' km';
- } else {
- distanceStr = Math.ceil(distance) + ' m';
- }
- } else {
- distance *= 1.09361;
- if (distance > 1760) {
- distanceStr = (distance / 1760).toFixed(2) + ' miles';
- } else {
- distanceStr = Math.ceil(distance) + ' yd';
- }
- }
- return distanceStr;
- }
- };
|