Skip to content

Commit 0583d05

Browse files
committed
FIX: bunch of fixes
1 parent 5a771b3 commit 0583d05

20 files changed

+109
-35
lines changed

src/geometry/index.android.ts

Lines changed: 10 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -1,4 +1,4 @@
1-
import { GeometryOptions, LineGeometryOptions, PointGeometryOptions } from '.';
1+
import { GeometryOptions, LineGeometryOptions, PointGeometryOptions, PolygonGeometryOptions } from '.';
22
import { mapPosVectorFromArgs } from '..';
33
import { MapPosVector, fromNativeMapBounds, fromNativeMapPos, toNativeMapPos } from '../core';
44
import { BaseNative } from '../index.common';
@@ -29,3 +29,12 @@ export class LineGeometry extends Geometry<com.carto.geometry.LineGeometry, Line
2929
return new MapPosVector(this.getNative().getPoses());
3030
}
3131
}
32+
export class PolygonGeometry extends Geometry<com.carto.geometry.PolygonGeometry, PolygonGeometryOptions> {
33+
createNative(options: PolygonGeometryOptions) {
34+
return new com.carto.geometry.PolygonGeometry(mapPosVectorFromArgs(options.poses));
35+
}
36+
37+
getPoses() {
38+
return new MapPosVector(this.getNative().getPoses());
39+
}
40+
}

src/geometry/index.d.ts

Lines changed: 7 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -13,10 +13,17 @@ export interface PointGeometryOptions<T = DefaultLatLonKeys> extends GeometryOpt
1313
export interface LineGeometryOptions<T = DefaultLatLonKeys> extends GeometryOptions<T> {
1414
poses: MapPosVector<T>;
1515
}
16+
export interface PolygonGeometryOptions<T = DefaultLatLonKeys> extends GeometryOptions<T> {
17+
poses: MapPosVector<T>;
18+
}
1619
export class PointGeometry<T = DefaultLatLonKeys> extends Geometry<T, PointGeometryOptions<T>> {
1720
getPos(): GenericMapPos<T>;
1821
}
1922

2023
export class LineGeometry<T = DefaultLatLonKeys> extends Geometry<T, LineGeometryOptions<T>> {
2124
getPoses(): MapPosVector<T>;
2225
}
26+
27+
export class PolygonGeometry<T = DefaultLatLonKeys> extends Geometry<T, PolygonGeometryOptions<T>> {
28+
getPoses(): MapPosVector<T>;
29+
}

src/geometry/index.ios.ts

Lines changed: 11 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -1,4 +1,4 @@
1-
import { GeometryOptions, LineGeometryOptions, PointGeometryOptions } from '.';
1+
import { GeometryOptions, LineGeometryOptions, PointGeometryOptions, PolygonGeometryOptions } from '.';
22
import { mapPosVectorFromArgs } from '..';
33
import { MapPosVector, fromNativeMapBounds, fromNativeMapPos, toNativeMapPos } from '../core';
44
import { BaseNative } from '../index.common';
@@ -29,3 +29,13 @@ export class LineGeometry extends Geometry<NTLineGeometry, LineGeometryOptions>
2929
return new MapPosVector(this.getNative().getPoses());
3030
}
3131
}
32+
33+
export class PolygonGeometry extends Geometry<NTLineGeometry, PolygonGeometryOptions> {
34+
createNative(options: PolygonGeometryOptions) {
35+
return NTPolygonGeometry.alloc().initWithPoses(mapPosVectorFromArgs(options.poses));
36+
}
37+
38+
getPoses() {
39+
return new MapPosVector(this.getNative().getPoses());
40+
}
41+
}

src/geometry/reader.android.ts

Lines changed: 4 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -4,7 +4,7 @@ import { FeatureCollection } from './feature';
44
import { Projection } from '../projections';
55
import { nativeProperty } from '..';
66
import { MapPosVector } from '../core';
7-
import { Geometry } from '.';
7+
import { Geometry, PolygonGeometry } from '.';
88
import { LineGeometry, PointGeometry } from './index.android';
99

1010
export class GeoJSONGeometryReader extends BaseNative<com.carto.geometry.GeoJSONGeometryReader, GeoJSONGeometryReaderOptions> {
@@ -20,8 +20,10 @@ export class GeoJSONGeometryReader extends BaseNative<com.carto.geometry.GeoJSON
2020
return new LineGeometry(null, result);
2121
} else if (result instanceof com.carto.geometry.PointGeometry) {
2222
return new PointGeometry(null, result);
23+
} else if (result instanceof com.carto.geometry.PolygonGeometry) {
24+
return new PolygonGeometry(null, result);
2325
}
24-
return null;
26+
return result;
2527
}
2628
set targetProjection(value: Projection) {
2729
this.native && this.native.setTargetProjection(value.getNative());

src/geometry/reader.ios.ts

Lines changed: 4 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -2,7 +2,7 @@ import { BaseNative } from '../index.common';
22
import { GeoJSONGeometryReaderOptions, WKBGeometryReaderOptions, WKTGeometryReaderOptions } from './reader';
33
import { FeatureCollection } from './feature';
44
import { Projection } from '../projections';
5-
import { Geometry } from '.';
5+
import { Geometry, PolygonGeometry } from '.';
66
import { nativeProperty } from '..';
77
import { LineGeometry, PointGeometry } from './index.ios';
88

@@ -19,8 +19,10 @@ export class GeoJSONGeometryReader extends BaseNative<NTGeoJSONGeometryReader, G
1919
return new LineGeometry(null, result);
2020
} else if (result instanceof NTPointGeometry) {
2121
return new PointGeometry(null, result);
22+
} else if (result instanceof NTPolygonGeometry) {
23+
return new PolygonGeometry(null, result);
2224
}
23-
return null;
25+
return result;
2426
}
2527
set targetProjection(value: Projection) {
2628
this.native && this.native.setTargetProjection(value.getNative());

src/index.android.ts

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -20,7 +20,7 @@ export function nativeColorProperty(...args) {
2020
return new Color((value as com.carto.graphics.Color).getARGB()).hex;
2121
},
2222
toNative(value) {
23-
const theColor = typeof value === 'string' ? new Color(value) : value;
23+
const theColor = value instanceof Color ? value : value._argb ? new Color(value._argb) : new Color(value);
2424
return new com.carto.graphics.Color(theColor.r, theColor.g, theColor.b, theColor.a);
2525
},
2626
},

src/index.ios.ts

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -16,7 +16,7 @@ export function nativeColorProperty(...args) {
1616
return new Color(value.getARGB() as number).hex;
1717
},
1818
toNative(value) {
19-
const theColor = typeof value === 'string' ? new Color(value) : value;
19+
const theColor = value instanceof Color ? value : value._argb ? new Color(value._argb) : new Color(value);
2020
return NTColor.alloc().initWithRGBA(theColor.r, theColor.g, theColor.b, theColor.a);
2121
}
2222
}

src/vectorelements/index.android.ts

Lines changed: 7 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -32,7 +32,7 @@ export const BillboardScaling = {
3232
},
3333
};
3434

35-
export class BaseVectorElement<T extends com.carto.vectorelements.VectorElement, U extends VectorElementOptions> extends BaseNative<T, U> {
35+
export abstract class BaseVectorElement<T extends com.carto.vectorelements.VectorElement, U extends VectorElementOptions> extends BaseNative<T, U> {
3636
@nativeProperty visible: boolean;
3737
createNative(options: U) {
3838
return null;
@@ -54,6 +54,10 @@ export class BaseVectorElement<T extends com.carto.vectorelements.VectorElement,
5454
this.native.setMetaData(theMap);
5555
}
5656
}
57+
abstract buildStyle();
58+
rebuildStyle() {
59+
(this.native as any).setStyle(this.buildStyle());
60+
}
5761
}
5862
export abstract class BasePointVectorElement<
5963
T extends com.carto.vectorelements.VectorElement & {
@@ -116,6 +120,7 @@ export class VectorElement extends BaseVectorElement<com.carto.vectorelements.Ve
116120
createNative() {
117121
return null;
118122
}
123+
buildStyle() {}
119124
}
120125

121126
export class VectorElementVector extends BaseNative<com.carto.vectorelements.VectorElementVector, any> {
@@ -130,7 +135,7 @@ export class VectorElementVector extends BaseNative<com.carto.vectorelements.Vec
130135
return result;
131136
}
132137
getElement(index: number): BaseVectorElement<any, any> {
133-
return this.elements[index] || new BaseVectorElement(undefined, this.native.get(index));
138+
return this.elements[index] || new VectorElement(undefined, this.native.get(index));
134139
}
135140
size() {
136141
if (this.native) {

src/vectorelements/index.common.ts

Lines changed: 25 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -1,6 +1,31 @@
11
import { BaseNative } from '../index.common';
22
import { VectorElementStyleBuilderOptions } from '.';
33

4+
export function styleBuilderProperty(target: any, propertyKey?, desc?: PropertyDescriptor): any {
5+
Object.defineProperty(target, propertyKey, {
6+
get() {
7+
return this.options.styleBuilder[propertyKey];
8+
},
9+
set(value) {
10+
this.options.styleBuilder[propertyKey] = value;
11+
this.rebuildStyle();
12+
},
13+
});
14+
}
15+
16+
export function lineStyleBuilderProperty(target: any, propertyKey?, desc?: PropertyDescriptor): any {
17+
const realKey = propertyKey.charAt(4).toLowerCase() + propertyKey.slice(5);
18+
Object.defineProperty(target, propertyKey, {
19+
get() {
20+
return this.options.styleBuilder.lineStyleBuilder[realKey];
21+
},
22+
set(value) {
23+
this.options.styleBuilder.lineStyleBuilder[realKey] = value;
24+
this.rebuildLineStyle();
25+
},
26+
});
27+
}
28+
429
export abstract class BaseVectorElementStyleBuilder<T, U extends VectorElementStyleBuilderOptions> extends BaseNative<T, U> {
530
abstract buildStyle(): any;
631

src/vectorelements/index.ios.ts

Lines changed: 7 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -30,7 +30,7 @@ export const BillboardScaling = {
3030
}
3131
};
3232

33-
export class BaseVectorElement<T extends NTVectorElement, U extends VectorElementOptions> extends BaseNative<T, U> {
33+
export abstract class BaseVectorElement<T extends NTVectorElement, U extends VectorElementOptions> extends BaseNative<T, U> {
3434
@nativeProperty visible: boolean;
3535
createNative(options: U) {
3636
return null;
@@ -52,6 +52,10 @@ export class BaseVectorElement<T extends NTVectorElement, U extends VectorElemen
5252
this.native.setMetaData(theMap);
5353
}
5454
}
55+
abstract buildStyle();
56+
rebuildStyle() {
57+
(this.native as any).setStyle(this.buildStyle());
58+
}
5559
}
5660

5761
export abstract class BasePointVectorElement<
@@ -122,6 +126,7 @@ export class VectorElement extends BaseVectorElement<NTVectorElement, VectorElem
122126
createNative() {
123127
return null;
124128
}
129+
buildStyle() {}
125130
}
126131
export class VectorElementVector extends BaseNative<NTVectorElementVector, any> {
127132
elements: BaseVectorElement<any, any>[];
@@ -141,7 +146,7 @@ export class VectorElementVector extends BaseNative<NTVectorElementVector, any>
141146
return this.elements.length;
142147
}
143148
getElement(index: number): BaseVectorElement<any, any> {
144-
return this.elements[index] || new BaseVectorElement(undefined, this.native.get(index));
149+
return this.elements[index] || new VectorElement(undefined, this.native.get(index));
145150
}
146151
add(element: BaseVectorElement<any, any>) {
147152
this.elements.push(element);

0 commit comments

Comments
 (0)