50 lines
1.6 KiB
JavaScript
Executable File
50 lines
1.6 KiB
JavaScript
Executable File
'use strict';
|
|
|
|
var meta = require('@turf/meta');
|
|
var helpers = require('@turf/helpers');
|
|
var clone = require('@turf/clone');
|
|
|
|
function _interopDefaultLegacy (e) { return e && typeof e === 'object' && 'default' in e ? e : { 'default': e }; }
|
|
|
|
var clone__default = /*#__PURE__*/_interopDefaultLegacy(clone);
|
|
|
|
/**
|
|
* Takes input features and flips all of their coordinates from `[x, y]` to `[y, x]`.
|
|
*
|
|
* @name flip
|
|
* @param {GeoJSON} geojson input features
|
|
* @param {Object} [options={}] Optional parameters
|
|
* @param {boolean} [options.mutate=false] allows GeoJSON input to be mutated (significant performance increase if true)
|
|
* @returns {GeoJSON} a feature or set of features of the same type as `input` with flipped coordinates
|
|
* @example
|
|
* var serbia = turf.point([20.566406, 43.421008]);
|
|
*
|
|
* var saudiArabia = turf.flip(serbia);
|
|
*
|
|
* //addToMap
|
|
* var addToMap = [serbia, saudiArabia];
|
|
*/
|
|
function flip(geojson, options) {
|
|
// Optional parameters
|
|
options = options || {};
|
|
if (!helpers.isObject(options)) throw new Error("options is invalid");
|
|
var mutate = options.mutate;
|
|
|
|
if (!geojson) throw new Error("geojson is required");
|
|
// ensure that we don't modify features in-place and changes to the
|
|
// output do not change the previous feature, including changes to nested
|
|
// properties.
|
|
if (mutate === false || mutate === undefined) geojson = clone__default['default'](geojson);
|
|
|
|
meta.coordEach(geojson, function (coord) {
|
|
var x = coord[0];
|
|
var y = coord[1];
|
|
coord[0] = y;
|
|
coord[1] = x;
|
|
});
|
|
return geojson;
|
|
}
|
|
|
|
module.exports = flip;
|
|
module.exports.default = flip;
|