@nativescript-community/ui-carto
Version:
NativeScript plugin for CARTO Mobile SDK
106 lines • 3.68 kB
JavaScript
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