///
///
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 {};