index.js 1.8 KB

12345678910111213141516171819202122232425262728293031323334353637383940414243444546
  1. "use strict";
  2. var __importDefault = (this && this.__importDefault) || function (mod) {
  3. return (mod && mod.__esModule) ? mod : { "default": mod };
  4. };
  5. Object.defineProperty(exports, "__esModule", { value: true });
  6. var destination_1 = __importDefault(require("@turf/destination"));
  7. var helpers_1 = require("@turf/helpers");
  8. /**
  9. * Takes a {@link Point} and calculates the circle polygon given a radius in degrees, radians, miles, or kilometers; and steps for precision.
  10. *
  11. * @name circle
  12. * @param {Feature<Point>|number[]} center center point
  13. * @param {number} radius radius of the circle
  14. * @param {Object} [options={}] Optional parameters
  15. * @param {number} [options.steps=64] number of steps
  16. * @param {string} [options.units='kilometers'] miles, kilometers, degrees, or radians
  17. * @param {Object} [options.properties={}] properties
  18. * @returns {Feature<Polygon>} circle polygon
  19. * @example
  20. * var center = [-75.343, 39.984];
  21. * var radius = 5;
  22. * var options = {steps: 10, units: 'kilometers', properties: {foo: 'bar'}};
  23. * var circle = turf.circle(center, radius, options);
  24. *
  25. * //addToMap
  26. * var addToMap = [turf.point(center), circle]
  27. */
  28. function circle(center, radius, options) {
  29. if (options === void 0) { options = {}; }
  30. // default params
  31. var steps = options.steps || 64;
  32. var properties = options.properties
  33. ? options.properties
  34. : !Array.isArray(center) && center.type === "Feature" && center.properties
  35. ? center.properties
  36. : {};
  37. // main
  38. var coordinates = [];
  39. for (var i = 0; i < steps; i++) {
  40. coordinates.push(destination_1.default(center, radius, (i * -360) / steps, options).geometry
  41. .coordinates);
  42. }
  43. coordinates.push(coordinates[0]);
  44. return helpers_1.polygon([coordinates], properties);
  45. }
  46. exports.default = circle;