Skip to content

Commit 2e7ec61

Browse files
committed
feat: MultiTileDataSource
1 parent a788b25 commit 2e7ec61

File tree

3 files changed

+72
-5
lines changed

3 files changed

+72
-5
lines changed

src/ui-carto/datasources/index.android.ts

Lines changed: 31 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -1,4 +1,12 @@
1-
import { CombinedTileDataSourceOptions, DataSourceOptions, GeoJSONVectorTileDataSourceOptions, MergedMBVTTileDataSourceOptions, OrderedTileDataSourceOptions, TileDataSourceOptions } from '.';
1+
import {
2+
CombinedTileDataSourceOptions,
3+
DataSourceOptions,
4+
GeoJSONVectorTileDataSourceOptions,
5+
MergedMBVTTileDataSourceOptions,
6+
MultiTileDataSourceOptions,
7+
OrderedTileDataSourceOptions,
8+
TileDataSourceOptions
9+
} from '.';
210
import { featureCollectionFromArgs, nativeProperty } from '..';
311
import { FeatureCollection } from '../geometry/feature';
412
import { BaseNative } from '../BaseNative';
@@ -79,3 +87,25 @@ export class GeoJSONVectorTileDataSource extends TileDataSource<com.carto.dataso
7987
this.getNative().deleteLayer(index);
8088
}
8189
}
90+
91+
export class MultiTileDataSource extends TileDataSource<com.carto.datasources.MultiTileDataSource, MultiTileDataSourceOptions> {
92+
createNative(options: MultiTileDataSourceOptions) {
93+
if (options.maxOpenedPackages) {
94+
return new com.carto.datasources.MultiTileDataSource(options.maxOpenedPackages);
95+
} else {
96+
return new com.carto.datasources.MultiTileDataSource();
97+
}
98+
}
99+
add(source: TileDataSource<any, any>, tileMask?: string) {
100+
if (tileMask) {
101+
this.getNative().add(source.getNative(), tileMask);
102+
} else {
103+
this.getNative().add(source.getNative());
104+
}
105+
}
106+
remove(source: TileDataSource<any, any>) {
107+
if (this.native) {
108+
this.getNative().remove(source.getNative());
109+
}
110+
}
111+
}

src/ui-carto/datasources/index.d.ts

Lines changed: 10 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -17,20 +17,27 @@ export class TileDataSource<T, U extends TileDataSourceOptions> extends DataSour
1717
loadTile(x, y, z): any;
1818
}
1919

20-
export interface OrderedTileDataSourceOptions extends DataSourceOptions {
20+
export interface OrderedTileDataSourceOptions extends TileDataSourceOptions {
2121
dataSources: TileDataSource<any, any>[];
2222
}
23-
export interface CombinedTileDataSourceOptions extends DataSourceOptions {
23+
export interface CombinedTileDataSourceOptions extends TileDataSourceOptions {
2424
dataSources: TileDataSource<any, any>[];
2525
zoomLevel: number;
2626
}
27+
export interface MultiTileDataSourceOptions extends TileDataSourceOptions {
28+
maxOpenedPackages?: number;
29+
}
2730
export class OrderedTileDataSource<T, U extends OrderedTileDataSourceOptions> extends TileDataSource<T, U> {}
2831

29-
export interface MergedMBVTTileDataSourceOptions extends DataSourceOptions {
32+
export interface MergedMBVTTileDataSourceOptions extends TileDataSourceOptions {
3033
dataSources: TileDataSource<any, any>[];
3134
}
3235
export class MergedMBVTTileDataSource<T, U extends MergedMBVTTileDataSourceOptions> extends TileDataSource<T, U> {}
3336
export class CombinedTileDataSource<T, U extends CombinedTileDataSourceOptions> extends TileDataSource<T, U> {}
37+
export class MultiTileDataSource<T, U extends MultiTileDataSourceOptions> extends TileDataSource<T, U> {
38+
add(source: TileDataSource<any, any>, tileMask?: string);
39+
remove(source: TileDataSource<any, any>);
40+
}
3441

3542
export interface GeoJSONVectorTileDataSourceOptions extends TileDataSourceOptions {
3643
simplifyTolerance?: number;

src/ui-carto/datasources/index.ios.ts

Lines changed: 31 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -1,4 +1,12 @@
1-
import { CombinedTileDataSourceOptions, DataSourceOptions, GeoJSONVectorTileDataSourceOptions, MergedMBVTTileDataSourceOptions, OrderedTileDataSourceOptions, TileDataSourceOptions } from '.';
1+
import {
2+
CombinedTileDataSourceOptions,
3+
DataSourceOptions,
4+
GeoJSONVectorTileDataSourceOptions,
5+
MergedMBVTTileDataSourceOptions,
6+
MultiTileDataSourceOptions,
7+
OrderedTileDataSourceOptions,
8+
TileDataSourceOptions
9+
} from '.';
210
import { featureCollectionFromArgs, nativeProperty } from '..';
311
import { FeatureCollection } from '../geometry/feature';
412
import { BaseNative } from '../BaseNative';
@@ -67,3 +75,25 @@ export class GeoJSONVectorTileDataSource extends TileDataSource<NTGeoJSONVectorT
6775
this.getNative().setLayerGeoJSONGeoJSON(layerIndex, jsonVariant(geoJSON));
6876
}
6977
}
78+
79+
export class MultiTileDataSource extends TileDataSource<NTMultiTileDataSource, MultiTileDataSourceOptions> {
80+
createNative(options: MultiTileDataSourceOptions) {
81+
if (options.maxOpenedPackages) {
82+
return NTMultiTileDataSource.alloc().initWithMaxOpenedPackages(options.maxOpenedPackages);
83+
} else {
84+
return NTMultiTileDataSource.alloc().init();
85+
}
86+
}
87+
add(source: TileDataSource<any, any>, tileMask?: string) {
88+
if (tileMask) {
89+
this.getNative().addTileMask(source.getNative(), tileMask);
90+
} else {
91+
this.getNative().add(source.getNative());
92+
}
93+
}
94+
remove(source: TileDataSource<any, any>) {
95+
if (this.native) {
96+
this.getNative().remove(source.getNative());
97+
}
98+
}
99+
}

0 commit comments

Comments
 (0)