UNPKG

@nativescript-community/ui-carto

Version:

NativeScript plugin for CARTO Mobile SDK

106 lines 3.68 kB
import { geometryFromArgs, mapPosVectorFromArgs, mapPosVectorVectorFromArgs, nativeColorProperty } from '..'; import { BaseLineVectorElement } from './index.android'; import { BaseVectorElementStyleBuilder, lineStyleBuilderProperty, styleBuilderProperty } from './index.common'; import { LineStyleBuilder } from './line'; export class PolygonStyleBuilder extends BaseVectorElementStyleBuilder { createNative(options) { return new com.carto.styles.PolygonStyleBuilder(); } get lineStyleBuilder() { return this.options.lineStyleBuilder; } set lineStyleBuilder(value) { this.options.lineStyleBuilder = value; if (this.native) { this.native.setLineStyle(this.buildLineStyle()); this.mBuildStyle = null; } } buildLineStyle() { let style; const styleBuilder = this.options.lineStyleBuilder; if (!styleBuilder) { return null; } if (styleBuilder instanceof com.carto.styles.LineStyle) { style = styleBuilder; } else if (styleBuilder instanceof LineStyleBuilder) { style = styleBuilder.buildStyle(); } else if (styleBuilder.hasOwnProperty) { style = new LineStyleBuilder(styleBuilder).buildStyle(); } return style; } buildStyle() { if (!this.mBuildStyle) { this.mBuildStyle = this.getNative().buildStyle(); } return this.mBuildStyle; } } __decorate([ nativeColorProperty ], PolygonStyleBuilder.prototype, "color", void 0); export class Polygon extends BaseLineVectorElement { createNative(options) { const style = this.buildStyle(); let result; if (options.positions) { result = new com.carto.vectorelements.Polygon(mapPosVectorFromArgs(options.positions, options.ignoreAltitude), style); } else if (options.geometry) { result = new com.carto.vectorelements.Polygon(geometryFromArgs(options.geometry), style); } if (options.holes) { result.setHoles(mapPosVectorVectorFromArgs(options.holes, options.ignoreAltitude)); } return result; } buildStyle() { let style; const styleBuilder = this.options.styleBuilder; if (styleBuilder instanceof com.carto.styles.PolygonStyle) { style = styleBuilder; } else if (styleBuilder instanceof PolygonStyleBuilder) { style = styleBuilder.buildStyle(); } else if (styleBuilder.hasOwnProperty) { style = new PolygonStyleBuilder(styleBuilder).buildStyle(); } return style; } get styleBuilder() { return this.native ? this.native.getStyle() : this.options.styleBuilder; } set styleBuilder(value) { if (this.native && !this.duringInit) { this.options.styleBuilder = value; this.native.setStyle(this.buildStyle()); } } rebuildLineStyle() { this.options.styleBuilder.lineStyleBuilder = this.options.styleBuilder.lineStyleBuilder; this.rebuildStyle(); } set geometry(geometry) { if (this.native) { this.native.setGeometry(geometryFromArgs(geometry)); } } } __decorate([ styleBuilderProperty ], Polygon.prototype, "color", void 0); __decorate([ styleBuilderProperty ], Polygon.prototype, "width", void 0); __decorate([ lineStyleBuilderProperty ], Polygon.prototype, "lineColor", void 0); __decorate([ lineStyleBuilderProperty ], Polygon.prototype, "lineWidth", void 0); //# sourceMappingURL=polygon.android.js.map