UNPKG

leaflet-polydraw

Version:

Advanced Leaflet plugin for freehand polygon drawing, with smart merging and powerful editing tools. Compatible with both Leaflet v1.x and v2.x.

128 lines 3.65 kB
import * as L from 'leaflet'; import { TurfHelper } from '../turf-helper'; import type { Feature, Polygon, MultiPolygon } from 'geojson'; import type { PolydrawConfig } from '../types/polydraw-interfaces'; import { ModeManager } from './mode-manager'; import { EventManager } from './event-manager'; export interface DrawResult { success: boolean; polygon?: Feature<Polygon | MultiPolygon>; error?: string; } export interface PolygonDrawManagerDependencies { turfHelper: TurfHelper; map: L.Map; config: PolydrawConfig; modeManager: ModeManager; eventManager: EventManager; tracer: L.Polyline; } /** * PolygonDrawManager handles all user-facing drawing actions. * This includes freehand drawing and point-to-point drawing functionality. */ export declare class PolygonDrawManager { private turfHelper; private map; private config; private modeManager; private eventManager; private tracer; private p2pMarkers; private isModifierKeyHeld; private markerModifierHandlers; constructor(dependencies: PolygonDrawManagerDependencies); /** * Handle mouse move during freehand drawing */ mouseMove(event: L.LeafletMouseEvent | TouchEvent): void; /** * Handle mouse up/leave to complete freehand drawing */ mouseUpLeave(event: L.LeafletMouseEvent | TouchEvent): Promise<DrawResult>; /** * Handle point-to-point click */ /** * Set the modifier key status * @param isHeld - Whether the modifier key is held down */ setModifierKey(isHeld: boolean): void; private shouldAllowP2PMarkerDeletion; /** * Handle point-to-point click */ handlePointToPointClick(clickLatLng: L.LatLng): void; /** * Handle double-click to complete point-to-point polygon */ handleDoubleClick(e: L.LeafletMouseEvent): void; /** * Handle double-tap to complete point-to-point polygon (touch devices) */ handleDoubleTap(event: TouchEvent): void; /** * Complete point-to-point polygon drawing */ completePointToPointPolygon(): void; /** * Cancel point-to-point drawing */ cancelPointToPointDrawing(): void; /** * Clear all P2P markers */ clearP2pMarkers(): void; /** * Reset the tracer */ resetTracer(): void; /** * Check if clicking on the first point to close polygon */ private isClickingFirstPoint; /** * Check if the current device supports touch */ private isTouchDevice; /** * Update the tracer polyline based on P2P markers */ private updateP2PTracer; /** * Delete a P2P marker */ private deleteP2PMarker; /** * Get current P2P markers (for external access) */ getP2pMarkers(): L.Marker[]; /** * Check if currently in point-to-point drawing mode */ isInPointToPointMode(): boolean; /** * Get current tracer points count */ getTracerPointsCount(): number; /** * Set up the first marker with special properties */ private setupFirstMarker; /** * Toggle helper class for first marker when polygon can be closed. */ private updateFirstMarkerReadyState; /** * Refresh the first-marker ready state when draw mode changes. */ refreshP2PMarkerState(): void; private applyP2PMarkerMode; private updateP2PMarkerModes; /** * Handle marker hover for edge deletion feedback */ private onMarkerHoverForEdgeDeletion; private detachMarkerModifierHandler; } //# sourceMappingURL=polygon-draw-manager.d.ts.map