backendless
Version:
Backendless JavaScript SDK for Node.js and the browser
116 lines (111 loc) • 4.36 kB
JavaScript
;
var _interopRequireDefault = require("@babel/runtime/helpers/interopRequireDefault");
Object.defineProperty(exports, "__esModule", {
value: true
});
exports["default"] = void 0;
var _toConsumableArray2 = _interopRequireDefault(require("@babel/runtime/helpers/toConsumableArray"));
var _classCallCheck2 = _interopRequireDefault(require("@babel/runtime/helpers/classCallCheck"));
var _createClass2 = _interopRequireDefault(require("@babel/runtime/helpers/createClass"));
var _inherits2 = _interopRequireDefault(require("@babel/runtime/helpers/inherits"));
var _possibleConstructorReturn2 = _interopRequireDefault(require("@babel/runtime/helpers/possibleConstructorReturn"));
var _getPrototypeOf2 = _interopRequireDefault(require("@babel/runtime/helpers/getPrototypeOf"));
var _geometry = _interopRequireDefault(require("./geometry"));
var _linestring = _interopRequireDefault(require("./linestring"));
var _constants = require("./constants");
function _createSuper(Derived) { var hasNativeReflectConstruct = _isNativeReflectConstruct(); return function _createSuperInternal() { var Super = (0, _getPrototypeOf2["default"])(Derived), result; if (hasNativeReflectConstruct) { var NewTarget = (0, _getPrototypeOf2["default"])(this).constructor; result = Reflect.construct(Super, arguments, NewTarget); } else { result = Super.apply(this, arguments); } return (0, _possibleConstructorReturn2["default"])(this, result); }; }
function _isNativeReflectConstruct() { if (typeof Reflect === "undefined" || !Reflect.construct) return false; if (Reflect.construct.sham) return false; if (typeof Proxy === "function") return true; try { Boolean.prototype.valueOf.call(Reflect.construct(Boolean, [], function () {})); return true; } catch (e) { return false; } }
var GEOJSON_TYPE = _constants.GeoTypes.POLYGON;
var WKT_TYPE = GEOJSON_TYPE.toUpperCase();
var Polygon = /*#__PURE__*/function (_Geometry) {
(0, _inherits2["default"])(Polygon, _Geometry);
var _super = _createSuper(Polygon);
function Polygon(boundary, holes, srs) {
var _this;
(0, _classCallCheck2["default"])(this, Polygon);
_this = _super.call(this, srs);
_this.setBoundary(boundary);
_this.setHoles(holes);
return _this;
}
(0, _createClass2["default"])(Polygon, [{
key: "getBoundary",
value: function getBoundary() {
return this.boundary;
}
}, {
key: "setBoundary",
value: function setBoundary(boundary) {
if (!boundary) {
throw new Error('The \'boundary\' argument is required.');
}
if (!(boundary instanceof _linestring["default"])) {
boundary = new _linestring["default"](boundary, this.srs);
}
this.boundary = boundary;
return this;
}
}, {
key: "getHoles",
value: function getHoles() {
return this.holes;
}
}, {
key: "setHoles",
value: function setHoles(holes) {
this.holes = holes || [];
return this;
}
/**
* @override
*/
}, {
key: "getGeojsonType",
value: function getGeojsonType() {
return GEOJSON_TYPE;
}
/**
* @override
*/
}, {
key: "getWktType",
value: function getWktType() {
return WKT_TYPE;
}
/**
* @override
*/
}, {
key: "jsonCoordinatePairs",
value: function jsonCoordinatePairs() {
var outerBoundaries = [];
this.getBoundary().getPoints().forEach(function (point) {
outerBoundaries.push([point.getX(), point.getY()]);
});
var innerBoundaries = this.holes.map(function (hole) {
return hole.getPoints().map(function (point) {
return [point.getX(), point.getY()];
});
});
return [outerBoundaries].concat((0, _toConsumableArray2["default"])(innerBoundaries));
}
/**
* @override
*/
}, {
key: "wktCoordinatePairs",
value: function wktCoordinatePairs() {
var wktPairsListCollection = [this.getBoundary().wktCoordinatePairs()];
this.holes.forEach(function (hole) {
return wktPairsListCollection.push(hole.wktCoordinatePairs());
});
var wrapParens = function wrapParens(str) {
return '(' + str + ')';
};
return wktPairsListCollection.map(wrapParens).join(',');
}
}]);
return Polygon;
}(_geometry["default"]);
var _default = Polygon;
exports["default"] = _default;