import Point from "@mapbox/point-geometry"; import { VectorTile, VectorTileFeature, VectorTileLayer } from "@mapbox/vector-tile"; import { ImageryProvider, ImageryTypes, Rectangle, Request, WebMercatorTilingScheme, Event as CesiumEvent, Resource, ImageryLayerFeatureInfo, Cartesian2, Cartographic, Credit, } from "cesium"; import Pbf from "pbf"; import { isFeatureClicked } from "./terria"; import { isLineStringClicked, isPointClicked } from "./util"; const defaultParseTile = async (url?: string, headers?: any) => { const ab = await fetchResourceAsArrayBuffer(url, headers); if (!ab) { return; } const tile = parseMVT(ab); return tile; }; const defaultPickPointRadius = 5; const defaultPickLineWidth = 5; type TileCoordinates = { x: number; y: number; level: number; }; type Style = { fillStyle?: string; strokeStyle?: string; lineWidth?: number; lineJoin?: CanvasLineJoin; }; type URLTemplate = `${`http${"s" | ""}://` | ""}${string}/{z}/{x}/{y}${string}`; type FeatureHandler = (feature: VectorTileFeature, tileCoords: TileCoordinates) => R; export type ImageryProviderOption = { urlTemplate: URLTemplate; layerName: string; headers?: any; minimumLevel?: number; maximumLevel?: number; maximumNativeZoom?: number; credit?: string; resolution?: number; onRenderFeature?: FeatureHandler; onFeaturesRendered?: () => void; style?: FeatureHandler