Skip to content

Commit 206901c

Browse files
committed
fix: allow vector listeners custom native class
1 parent ca981a9 commit 206901c

File tree

4 files changed

+28
-23
lines changed

4 files changed

+28
-23
lines changed

src/ui-carto/layers/vector.android.ts

Lines changed: 17 additions & 14 deletions
Original file line numberDiff line numberDiff line change
@@ -62,7 +62,7 @@ function getGeojsonWriter() {
6262
export abstract class BaseVectorTileLayer<T extends com.carto.layers.VectorTileLayer, U extends VectorTileLayerOptions> extends TileLayer<T, U> {
6363
listenerProjection?: Projection;
6464
listener?: IVectorTileEventListener;
65-
nListener?: com.akylas.carto.additions.AKVectorTileEventListener;
65+
nListener?: com.akylas.carto.additions.AKVectorTileEventListener | com.carto.layers.VectorTileEventListener;
6666

6767
@nativeProperty layerBlendingSpeed: number;
6868
@nativeProperty labelBlendingSpeed: number;
@@ -79,16 +79,20 @@ export abstract class BaseVectorTileLayer<T extends com.carto.layers.VectorTileL
7979
}
8080
}
8181
}
82-
setVectorTileEventListener(listener: IVectorTileEventListener, projection?: Projection) {
82+
setVectorTileEventListener(listener: IVectorTileEventListener | any, projection?: Projection, nativeClass = com.akylas.carto.additions.AKVectorTileEventListener) {
8383
this.listener = listener;
8484
this.listenerProjection = projection;
8585
if (listener) {
86-
if (!this.nListener) {
87-
this.nListener = new com.akylas.carto.additions.AKVectorTileEventListener(
88-
new com.akylas.carto.additions.AKVectorTileEventListener.Listener({
89-
onVectorTileClicked: this.onTileClicked.bind(this)
90-
})
91-
);
86+
if (listener instanceof com.carto.layers.VectorTileEventListener) {
87+
this.nListener = listener;
88+
} else {
89+
if (!this.nListener) {
90+
this.nListener = new nativeClass(
91+
new com.akylas.carto.additions.AKVectorTileEventListener.Listener({
92+
onVectorTileClicked: this.onTileClicked.bind(this)
93+
})
94+
);
95+
}
9296
}
9397
this.getNative().setVectorTileEventListener(this.nListener);
9498
} else {
@@ -194,12 +198,12 @@ export abstract class BaseVectorLayer<T extends com.carto.layers.VectorLayer, U
194198
}
195199
}
196200
}
197-
setVectorElementEventListener(listener: IVectorElementEventListener, projection?: Projection) {
201+
setVectorElementEventListener(listener: IVectorElementEventListener, projection?: Projection, nativeClass = com.akylas.carto.additions.AKVectorElementEventListener) {
198202
this.elementListener = listener;
199203
this.projection = projection;
200204
if (listener) {
201205
if (!this.nElementListener) {
202-
this.nElementListener = new com.akylas.carto.additions.AKVectorElementEventListener(
206+
this.nElementListener = new nativeClass(
203207
new com.akylas.carto.additions.AKVectorElementEventListener.Listener({
204208
onVectorElementClicked: this.onElementClicked.bind(this)
205209
})
@@ -285,12 +289,12 @@ export class EditableVectorLayer extends BaseVectorLayer<com.carto.layers.Editab
285289
this.native.setSelectedVectorElement(element instanceof BaseNative ? element.getNative() : element);
286290
}
287291
}
288-
setVectorEditEventListener(listener: IVectorEditEventListener, projection?: Projection) {
292+
setVectorEditEventListener(listener: IVectorEditEventListener, projection?: Projection, nativeClass = com.akylas.carto.additions.AKVectorEditEventListener) {
289293
this.editListener = listener;
290294
this.projection = projection;
291295
if (listener) {
292296
if (!this.nEditListener) {
293-
this.nEditListener = new com.akylas.carto.additions.AKVectorEditEventListener(
297+
this.nEditListener = new nativeClass(
294298
new com.akylas.carto.additions.AKVectorEditEventListener.Listener({
295299
onDragEnd: this.onDragEnd.bind(this),
296300
onDragMove: this.onDragMove.bind(this),
@@ -397,8 +401,7 @@ export class ClusteredVectorLayer extends BaseVectorLayer<com.carto.layers.Clust
397401
@nativeProperty maximumClusterZoom: number;
398402
@nativeProperty({
399403
nativeGetterName: 'isAnimatedClusters'
400-
})
401-
animatedClusters: boolean;
404+
}) animatedClusters: boolean;
402405

403406
expandCluster(element: VectorElement<any, any>, px: number) {
404407
this.getNative().expandCluster(element.getNative(), px);

src/ui-carto/layers/vector.d.ts

Lines changed: 2 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -161,12 +161,12 @@ export abstract class BaseVectorTileLayer<T, U extends TileLayerOptions> extends
161161
tileCacheCapacity: number;
162162
setLabelRenderOrder(order: VectorTileRenderOrder): void;
163163
setBuildingRenderOrder(order: VectorTileRenderOrder);
164-
setVectorTileEventListener<T = DefaultLatLonKeys>(listener: VectorTileEventListener<T>, projection?: Projection): void;
164+
setVectorTileEventListener<T = DefaultLatLonKeys>(listener: VectorTileEventListener<T>, projection?: Projection, nativeClass?: any): void;
165165
getTileDecoder(): MBVectorTileDecoder;
166166
}
167167

168168
export abstract class BaseVectorLayer<T, U extends VectorLayerOptions> extends Layer<T, U> {
169-
setVectorElementEventListener<T = DefaultLatLonKeys>(listener: VectorElementEventListener<T>, projection?: Projection): void;
169+
setVectorElementEventListener<T = DefaultLatLonKeys>(listener: VectorElementEventListener<T>, projection?: Projection, nativeClass?: any): void;
170170
}
171171

172172
export class VectorLayer extends BaseVectorLayer<any, VectorLayerOptions> {}

src/ui-carto/layers/vector.ios.ts

Lines changed: 9 additions & 6 deletions
Original file line numberDiff line numberDiff line change
@@ -163,9 +163,13 @@ export abstract class BaseVectorTileLayer<T extends NTVectorTileLayer, U extends
163163
@nativeProperty labelRenderOrder: IVectorTileRenderOrder;
164164
@nativeProperty buildingRenderOrder: IVectorTileRenderOrder;
165165

166-
setVectorTileEventListener(listener: IVectorTileEventListener, projection?: Projection) {
166+
setVectorTileEventListener(listener: IVectorTileEventListener | any, projection?: Projection, nativeClass = NTVectorTileEventListenerImpl) {
167167
if (listener) {
168-
this.getNative().setVectorTileEventListener(NTVectorTileEventListenerImpl.initWithOwner(new WeakRef(listener), new WeakRef(this), projection));
168+
if (listener instanceof NTVectorTileEventListener) {
169+
this.getNative().setVectorTileEventListener(listener);
170+
} else {
171+
this.getNative().setVectorTileEventListener(nativeClass.initWithOwner(new WeakRef(listener), new WeakRef(this), projection));
172+
}
169173
} else {
170174
this.getNative().setVectorTileEventListener(null);
171175
}
@@ -207,9 +211,9 @@ export abstract class BaseVectorLayer<T extends NTVectorLayer, U extends VectorL
207211
// initVectorElementEventListener();
208212
// this.getNative().setVectorElementEventListener(new VectorElementEventListener(new WeakRef(listener), new WeakRef(this)));
209213
// }
210-
setVectorElementEventListener(listener: IVectorElementEventListener, projection?: Projection) {
214+
setVectorElementEventListener(listener: IVectorElementEventListener, projection?: Projection, nativeClass = NTVectorElementEventListenerImpl) {
211215
if (listener) {
212-
this.getNative().setVectorElementEventListener(NTVectorElementEventListenerImpl.initWithOwner(new WeakRef(listener), new WeakRef(this), projection));
216+
this.getNative().setVectorElementEventListener(nativeClass.initWithOwner(new WeakRef(listener), new WeakRef(this), projection));
213217
} else {
214218
this.getNative().setVectorElementEventListener(null);
215219
}
@@ -294,8 +298,7 @@ export class ClusteredVectorLayer extends BaseVectorLayer<NTClusteredVectorLayer
294298
@nativeProperty maximumClusterZoom: number;
295299
@nativeProperty({
296300
nativeGetterName: 'isAnimatedClusters'
297-
})
298-
animatedClusters: boolean;
301+
}) animatedClusters: boolean;
299302

300303
expandCluster(element: VectorElement<any, any>, px: number) {
301304
this.getNative().expandClusterPx(element.getNative(), px);

src/ui-carto/references.d.ts

Lines changed: 0 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -2,4 +2,3 @@
22
/// <reference path="./typings/carto.ios.d.ts" />
33
/// <reference path="./typings/ak.carto.ios.d.ts" />
44
/// <reference path="./typings/ak.carto.android.d.ts" />
5-
/// <reference path="../node_modules/@nativescript/core/global-types.d.ts" />

0 commit comments

Comments
 (0)