123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657 |
- "use strict";
- Object.defineProperty(exports, "__esModule", { value: true });
- const symbol_1 = require("../helper/symbol");
- const point_1 = require("./point");
- const type_1 = require("../utils/type");
- class LineString {
- constructor(points) {
- if (!type_1.isArray(points)) {
- throw new TypeError(`"points" must be of type Point[]. Received type ${typeof points}`);
- }
- if (points.length < 2) {
- throw new Error('"points" must contain 2 points at least');
- }
- points.forEach(point => {
- if (!(point instanceof point_1.Point)) {
- throw new TypeError(`"points" must be of type Point[]. Received type ${typeof point}[]`);
- }
- });
- this.points = points;
- }
- parse(key) {
- return {
- [key]: {
- type: 'LineString',
- coordinates: this.points.map(point => point.toJSON().coordinates)
- }
- };
- }
- toJSON() {
- return {
- type: 'LineString',
- coordinates: this.points.map(point => point.toJSON().coordinates)
- };
- }
- static validate(lineString) {
- if (lineString.type !== 'LineString' || !type_1.isArray(lineString.coordinates)) {
- return false;
- }
- for (let point of lineString.coordinates) {
- if (!type_1.isNumber(point[0]) || !type_1.isNumber(point[1])) {
- return false;
- }
- }
- return true;
- }
- static isClosed(lineString) {
- const firstPoint = lineString.points[0];
- const lastPoint = lineString.points[lineString.points.length - 1];
- if (firstPoint.latitude === lastPoint.latitude && firstPoint.longitude === lastPoint.longitude) {
- return true;
- }
- }
- get _internalType() {
- return symbol_1.SYMBOL_GEO_LINE_STRING;
- }
- }
- exports.LineString = LineString;
|