/// /// import * as L from 'leaflet'; import { MarkerClusterer as GoogleMarkerClusterer } from '@googlemaps/markerclusterer'; import { LoaderOptions } from '@googlemaps/js-api-loader'; import * as mapboxgl from 'mapbox-gl'; export declare type MapLatLng = { lat: number; lng: number; }; export declare type MapBoundingBox = { ne: MapLatLng; sw: MapLatLng; }; export declare type MapControlPosition = 'TOP_CENTER' | 'TOP_LEFT' | 'TOP_RIGHT' | 'RIGHT_TOP' | 'LEFT_CENTER' | 'LEFT_TOP' | 'RIGHT_CENTER' | 'LEFT_BOTTOM' | 'RIGHT_BOTTOM' | 'BOTTOM_CENTER' | 'BOTTOM_LEFT' | 'BOTTOM_RIGHT'; export declare type MapControl = { position: MapControlPosition; children: React.ReactNode; }; export declare type MapEventOnLoadParams = { utils: ICurrentMapUtils; googleMap?: google.maps.Map; mapBox?: mapboxgl.Map; leaflet?: L.Map; }; export declare type MapEventClickParams = { position: MapLatLng; }; export declare type MapEventZoomChangeParams = { zoom: number; }; export declare type MapEventCenterChangeParams = { position: MapLatLng; }; export declare type MapEventDragParams = { position: MapLatLng; }; export declare type MapProvider = 'google' | 'mapbox' | 'leaflet'; export declare type MapEventOnLoad = (event: MapEventOnLoadParams) => void; export declare type MapEventClick = (event: MapEventClickParams) => void; export declare type MapEventZoomChange = (event: MapEventZoomChangeParams) => void; export declare type MapEventCenterChange = (event: MapEventCenterChangeParams) => void; export declare type MapEventDrag = (event: MapEventDragParams) => void; export declare type MapEventTypeChange = (type: 'TERRAIN' | 'SATELLITE') => void; export declare type MapComponentProps = { provider: MapProvider; defaultCenter?: MapLatLng; defaultZoom?: number; center?: MapLatLng; zoom?: number; height?: number; children?: React.ReactNode; minZoom?: number; maxZoom?: number; maxBounds?: MapBoundingBox; loadingComponent?: JSX.Element; googleLoaderOptions?: LoaderOptions; googleOptions?: google.maps.MapOptions; mapBoxOptions?: Omit; mapBoxLoaderOptions?: { version: string; }; leafletOptions?: L.MapOptions; leafletLoaderOptions?: { version: string; }; onClick?: MapEventClick; onRightClick?: MapEventClick; onZoomChange?: MapEventZoomChange; onCenterChange?: MapEventCenterChange; onMapLoad?: MapEventOnLoad; }; export declare type MapCircleEditEventParams = { radius: number; }; export declare type MapCircleEditEvent = (event: MapCircleEditEventParams) => void; export declare type MapCircle = { radius: number; position: MapLatLng; fillColor: string; fillOpacity?: number; strokeColor?: string; strokeOpacity?: number; strokeWeight?: number; zIndex?: number; editable?: boolean; draggable?: boolean; onClick?: MapEventClick; onRightClick?: MapEventClick; onEdited?: MapCircleEditEvent; onDragEnd?: MapEventDrag; }; export declare type MapPopup = { position: MapLatLng; children: React.ReactNode; onClose?: () => void; }; export declare type MapMarkerSize = { width: number; height: number; }; export declare type MapMarkerAnchor = { x: number; y: number; }; export declare type MapMarker = { position: MapLatLng; imageUrl?: string; label?: string; size?: MapMarkerSize; anchor?: MapMarkerAnchor; angle?: number; zIndex?: number; draggable?: boolean; onDrag?: MapEventDrag; onDragEnd?: MapEventDrag; onClick?: MapEventClick; onRightClick?: MapEventClick; }; interface MapOverlayBase { bounds: MapBoundingBox; imageUrl?: string; canvas?: HTMLCanvasElement; angle?: number; elevation?: number; visible?: boolean; onClick?: () => void; } interface MapOverlayWithImageUrl extends MapOverlayBase { imageUrl: string; } interface MapOverlayWithCanvas extends MapOverlayBase { canvas: HTMLCanvasElement; } export declare type MapOverlay = (MapOverlayWithImageUrl | MapOverlayWithCanvas); export declare type MapPolygonEventEditParams = { path: MapLatLng[]; }; export declare type MapPolygonEventDragParams = { path: MapLatLng[]; }; export declare type MapPolygonEventEdit = (event: MapPolygonEventEditParams) => void; export declare type MapPolygonEventDrag = (event: MapPolygonEventDragParams) => void; export declare type MapPolygon = { fillColor: string; strokeColor: string; path: MapLatLng[]; fillOpacity?: number; strokeOpacity?: number; strokeWeight?: number; zIndex?: number; draggable?: boolean; editable?: boolean; onClick?: MapEventClick; onRightClick?: MapEventClick; onEdited?: MapPolygonEventEdit; onDragEnd?: MapPolygonEventDrag; }; export declare type MapPolylineEventEditParams = { path: MapLatLng[]; position: MapLatLng; vertex?: number; edge?: number; }; export declare type MapPolylineEventDragParams = { path: MapLatLng[]; }; export declare type MapPolylineEventEdit = (event: MapPolylineEventEditParams) => void; export declare type MapPolylineEventDrag = (event: MapPolylineEventDragParams) => void; export declare type MapPolyline = { path: MapLatLng[]; strokeColor?: string; strokeOpacity?: number; strokeWeight?: number; zIndex?: number; draggable?: boolean; editable?: boolean; dashed?: boolean; onClick?: MapEventClick; onRightClick?: MapEventClick; onEdited?: MapPolylineEventEdit; onDragEnd?: MapPolylineEventDrag; }; export declare type MapRectangleEventEditParams = { bounds: MapBoundingBox; }; export declare type MapRectangleEventDragParams = { bounds: MapBoundingBox; }; export declare type MapRectangleEventEdit = (event: MapRectangleEventEditParams) => void; export declare type MapRectangleEventDrag = (event: MapRectangleEventDragParams) => void; export declare type MapRectangle = { bounds: MapBoundingBox; fillColor: string; strokeColor?: string; fillOpacity?: number; strokeOpacity?: number; strokeWeight?: number; zIndex?: number; draggable?: boolean; editable?: boolean; onClick?: MapEventClick; onRightClick?: MapEventClick; onEdited?: MapRectangleEventEdit; onDragEnd?: MapRectangleEventDrag; }; export declare type MapText = { text: string; bounds: MapBoundingBox; color?: string; size?: number; borderColor?: string; borderSize?: number; elevation?: number; visible?: boolean; editable?: boolean; draggable?: boolean; onClick?: () => void; onDragEnd?: MapRectangleEventDrag; }; export interface MapHeatmapPoint extends MapLatLng { weight?: number; } export interface MapHeatmap { path: MapHeatmapPoint[]; gradient?: string[]; dissipating?: boolean; maxIntensity?: number; radius?: number; opacity?: number; } export declare type MapMarkerCluster = { googleCluster?: GoogleMarkerClusterer; leafletCluster?: L.MarkerClusterGroup; }; export declare type ICurrentMapUtils = { animateTo: (position: MapLatLng, zoom?: number) => void; animateToBounds: (bounds: MapBoundingBox) => void; fitToPath: (path: MapLatLng[]) => void; getElement: () => HTMLElement | null; unproject: (x: number, y: number) => MapLatLng; }; export declare type ICurrentMap = { type: MapProvider; googleMap?: google.maps.Map | null; mapBox?: mapboxgl.Map | null; leaflet?: L.Map | null; center: MapLatLng; zoom: number; utils: ICurrentMapUtils; }; export {};