import { Layer, LayerOptions, TileLayer, TileLayerOptions } from '.'; import { TileDataSource } from '../datasources'; import { MBVectorTileDecoder, VectorTileDecoder } from '../vectortiles'; import { CartoPackageManager } from '../packagemanager'; import { CartoMapStyle, ClickType, DefaultLatLonKeys, GenericMapPos, MapPos } from '../core'; import { ClusterElementBuilder } from './cluster'; import { VectorElement } from '../vectorelements'; import { Projection } from '../projections'; import { Geometry } from '../geometry'; import { PointStyleBuilder } from 'nativescript-carto/vectorelements/point'; export enum VectorTileRenderOrder { HIDDEN, LAYER, LAST } export enum VectorElementDragResult { IGNORE, STOP, MODIFY, DELETE } export interface VectorTileEventData { clickType: ClickType; layer: BaseVectorTileLayer; featureId: number; featureData: { [k: string]: string }; featureLayerName: string; position: GenericMapPos; featurePosition: GenericMapPos; featureGeometry: Geometry; } export interface VectorElementEventData { clickType: ClickType; layer: BaseVectorTileLayer; // featureId: number; // featureData: { [k: string]: string }; // featureLayerName: string; metaData: { [k: string]: string }; element: VectorElement; position: GenericMapPos; elementPos: GenericMapPos; } export interface VectorElementDragInfo {} export interface VectorTileEventListener { onVectorTileClicked(info: VectorTileEventData); } export interface VectorElementEventListener { onVectorElementClicked(info: VectorElementEventData); } export interface VectorEditEventListener { onElementModify(param0: VectorElement, param1: Geometry): void; onElementDeselected(param0: VectorElement): void; onElementSelect(param0: VectorElement): boolean; onSelectDragPointStyle(param0: VectorElement, style: any): PointStyleBuilder; onDragMove(param0: VectorElementDragInfo): VectorElementDragResult; onDragEnd(param0: VectorElementDragInfo): VectorElementDragResult; onDragStart(param0: VectorElementDragInfo): VectorElementDragResult; onElementDelete(param0: VectorElement): void; } export interface VectorLayerOptions extends LayerOptions { dataSource: TileDataSource; } export interface VectorTileLayerOptions extends TileLayerOptions { dataSource?: TileDataSource; decoder?: VectorTileDecoder; } export interface CartoOnlineVectorTileLayerOptions extends VectorTileLayerOptions { style: CartoMapStyle; } export interface CartoOfflineVectorTileLayerOptions extends VectorTileLayerOptions { packageManager: CartoPackageManager; style: CartoMapStyle; } export interface ClusteredVectorLayerLayerOptions extends VectorTileLayerOptions { dataSource: TileDataSource; builder: ClusterElementBuilder; minimumClusterDistance?: number; maximumClusterZoom?: number; animatedClusters?: boolean; } export abstract class BaseVectorTileLayer extends TileLayer { dataSource?: TileDataSource; setLabelRenderOrder(order: VectorTileRenderOrder): void; setVectorTileEventListener(listener: VectorTileEventListener, projection?: Projection): void; getTileDecoder(): MBVectorTileDecoder; } export abstract class BaseVectorLayer extends Layer { setVectorElementEventListener(listener: VectorElementEventListener, projection?: Projection): void; } export class VectorLayer extends BaseVectorLayer {} export class EditableVectorLayer extends VectorLayer {} export class VectorTileLayer extends BaseVectorTileLayer {} export class CartoOnlineVectorTileLayer extends BaseVectorTileLayer {} export class CartoOfflineVectorTileLayer extends BaseVectorTileLayer {} export class ClusteredVectorLayer extends BaseVectorLayer { minimumClusterDistance?: number; maximumClusterZoom?: number; animatedClusters?: boolean; }