1234567891011121314151617181920212223242526272829303132333435363738394041424344454647484950515253 |
- import { SYMBOL_GEO_MULTI_LINE_STRING } from '../helper/symbol';
- import { isArray, isNumber } from '../utils/type';
- import { LineString } from './lineString';
- export class MultiLineString {
- constructor(lines) {
- if (!isArray(lines)) {
- throw new TypeError(`"lines" must be of type LineString[]. Received type ${typeof lines}`);
- }
- if (lines.length === 0) {
- throw new Error('Polygon must contain 1 linestring at least');
- }
- lines.forEach(line => {
- if (!(line instanceof LineString)) {
- throw new TypeError(`"lines" must be of type LineString[]. Received type ${typeof line}[]`);
- }
- });
- this.lines = lines;
- }
- parse(key) {
- return {
- [key]: {
- type: 'MultiLineString',
- coordinates: this.lines.map(line => {
- return line.points.map(point => [point.longitude, point.latitude]);
- })
- }
- };
- }
- toJSON() {
- return {
- type: 'MultiLineString',
- coordinates: this.lines.map(line => {
- return line.points.map(point => [point.longitude, point.latitude]);
- })
- };
- }
- static validate(multiLineString) {
- if (multiLineString.type !== 'MultiLineString' || !isArray(multiLineString.coordinates)) {
- return false;
- }
- for (let line of multiLineString.coordinates) {
- for (let point of line) {
- if (!isNumber(point[0]) || !isNumber(point[1])) {
- return false;
- }
- }
- }
- return true;
- }
- get _internalType() {
- return SYMBOL_GEO_MULTI_LINE_STRING;
- }
- }
|