L.Polyline.measuredDistance.js 1.2 KB

12345678910111213141516171819202122232425262728293031323334353637383940414243444546474849
  1. /*
  2. * Extends L.Polyline to retrieve measured distance.
  3. *
  4. * https://github.com/danimt/Leaflet.PolylineMeasuredDistance
  5. */
  6. L.Polyline.prototype.measuredDistance = function (options) {
  7. // Default options
  8. this.defaults = {
  9. metric: true
  10. };
  11. // Extend options
  12. this.options = L.extend(this.defaults, options);
  13. var distance = 0, coords = null, coordsArray = this._latlngs;
  14. for (i = 0; i < coordsArray.length - 1; i++) {
  15. coords = coordsArray[i];
  16. distance += coords.distanceTo(coordsArray[i + 1]);
  17. }
  18. // Return formatted distance
  19. return L.PolylineUtil.readableDistance(distance, this.options.metric);
  20. };
  21. L.PolylineUtil = {
  22. readableDistance: function (distance, isMetric) {
  23. var distanceStr;
  24. if (isMetric) {
  25. // show metres when distance is < 1km, then show km
  26. if (distance > 1000) {
  27. distanceStr = (distance / 1000).toFixed(2) + ' km';
  28. } else {
  29. distanceStr = Math.ceil(distance) + ' m';
  30. }
  31. } else {
  32. distance *= 1.09361;
  33. if (distance > 1760) {
  34. distanceStr = (distance / 1760).toFixed(2) + ' miles';
  35. } else {
  36. distanceStr = Math.ceil(distance) + ' yd';
  37. }
  38. }
  39. return distanceStr;
  40. }
  41. };