UNPKG

ngx-mapbox-gl

Version:

A Angular binding of mapbox-gl-js

124 lines (123 loc) 5.89 kB
import { EventEmitter, InjectionToken } from '@angular/core'; import { Map, Marker, Popup, type AnimationOptions, type CanvasSource, type EasingOptions, type FilterSpecification, type LayoutSpecification, type LngLatLike, type MapOptions, type MarkerOptions, type PaintSpecification, type PointLike, type PopupOptions, type Source, type SourceSpecification } from 'mapbox-gl'; import { Observable } from 'rxjs'; import { LayerEvents, NgxMapEvent } from './map.types'; import * as i0 from "@angular/core"; export declare const MAPBOX_API_KEY: InjectionToken<unknown>; export interface SetupMap { accessToken?: string; mapOptions: Omit<MapOptions, 'bearing' | 'pitch' | 'zoom'> & { /** * NOTE: Thoses can be arrays in order to be able to imperatively change them if the map is moved manually */ bearing?: [number] | number; pitch?: [number] | number; zoom?: [number] | number; }; mapEvents: NgxMapEvent; } export interface SetupLayer { layerOptions: Parameters<Map['addLayer']>[0]; layerEvents: LayerEvents; } export interface SetupPopup { popupOptions: PopupOptions; popupEvents: { popupOpen: EventEmitter<void>; popupClose: EventEmitter<void>; }; } export interface SetupMarker { markersOptions: { pitchAlignment?: MarkerOptions['pitchAlignment']; rotationAlignment?: MarkerOptions['rotationAlignment']; offset?: MarkerOptions['offset']; anchor?: MarkerOptions['anchor']; draggable?: MarkerOptions['draggable']; element: HTMLElement; feature?: GeoJSON.Feature<GeoJSON.Point>; lngLat?: LngLatLike; clickTolerance?: MarkerOptions['clickTolerance']; }; markersEvents: { markerDragStart: EventEmitter<Marker>; markerDrag: EventEmitter<Marker>; markerDragEnd: EventEmitter<Marker>; }; } export type MovingOptions = Parameters<Map['jumpTo']>[0] | Parameters<Map['easeTo']>[0] | Parameters<Map['flyTo']>[0]; export declare class MapService { private readonly zone; private readonly MAPBOX_API_KEY; private readonly injector; mapInstance: Map; mapCreated$: Observable<void>; mapLoaded$: Observable<void>; mapEvents: NgxMapEvent; private mapCreated; private mapLoaded; private markersToRemove; private popupsToRemove; private imageIdsToRemove; private subscription; constructor(); setup(options: SetupMap): void; destroyMap(): void; updateProjection(projection: MapOptions['projection']): void; updateMinZoom(minZoom: number): void; updateMaxZoom(maxZoom: number): void; updateMinPitch(minPitch: number): void; updateMaxPitch(maxPitch: number): void; updateRenderWorldCopies(status: boolean): void; updateScrollZoom(status: boolean): void; updateDragRotate(status: boolean): void; updateTouchPitch(status: boolean): void; updateTouchZoomRotate(status: boolean): void; updateDoubleClickZoom(status: boolean): void; updateKeyboard(status: boolean): void; updateDragPan(status: boolean): void; updateBoxZoom(status: boolean): void; updateStyle(style: Parameters<Map['setStyle']>[0]): void; updateMaxBounds(maxBounds: Parameters<Map['setMaxBounds']>[0]): void; changeCanvasCursor(cursor: string): void; queryRenderedFeatures(pointOrBox: PointLike | [PointLike, PointLike], parameters?: { layers?: string[]; filter?: FilterSpecification; validate?: boolean; }): GeoJSON.Feature<GeoJSON.GeometryObject>[]; panTo(center: LngLatLike, options?: AnimationOptions): void; move(movingMethod: 'jumpTo' | 'easeTo' | 'flyTo', movingOptions?: MovingOptions, zoom?: number, center?: LngLatLike, bearing?: number, pitch?: number): void; addLayer(layer: SetupLayer, bindEvents: boolean, before?: string): void; removeLayer(layerId: string): void; addMarker(marker: SetupMarker): Marker; removeMarker(marker: Marker): void; createPopup(popup: SetupPopup, element: Node): Popup; addPopupToMap(popup: Popup, lngLat: LngLatLike, skipOpenEvent?: boolean): void; addPopupToMarker(marker: Marker, popup: Popup): void; removePopupFromMap(popup: Popup, skipCloseEvent?: boolean): void; removePopupFromMarker(marker: Marker): void; addControl(control: Parameters<Map['addControl']>[0], position?: Parameters<Map['addControl']>[1]): void; removeControl(control: Parameters<Map['removeControl']>[0]): void; loadAndAddImage(imageId: string, url: string, options?: Parameters<Map['addImage']>[2]): Promise<void>; addImage(imageId: Parameters<Map['addImage']>[0], data: Parameters<Map['addImage']>[1], options?: Parameters<Map['addImage']>[2]): void; removeImage(imageId: string): void; addSource(sourceId: string, source: SourceSpecification | CanvasSource['options']): void; getSource<T extends Source>(sourceId: string): T | undefined; removeSource(sourceId: string): void; setLayerAllPaintProperty(layerId: string, paint: PaintSpecification): void; setLayerAllLayoutProperty(layerId: string, layout: LayoutSpecification): void; setLayerFilter(layerId: string, filter: FilterSpecification[]): void; setLayerBefore(layerId: string, beforeId: string): void; setLayerZoomRange(layerId: string, minZoom?: number, maxZoom?: number): void; fitBounds(bounds: Parameters<Map['fitBounds']>[0], options?: Parameters<Map['fitBounds']>[1]): void; fitScreenCoordinates(points: [PointLike, PointLike], bearing: number, options?: EasingOptions): void; applyChanges(): void; private createMap; private removeMarkers; private removePopups; private removeImages; private findLayersBySourceId; private hookEvents; static ɵfac: i0.ɵɵFactoryDeclaration<MapService, never>; static ɵprov: i0.ɵɵInjectableDeclaration<MapService>; }