import L, { LatLng } from 'leaflet'; import { CanvasShip } from 'map-sdk-leaflet/es/sdk/model/CanvasShip'; import type { MyMap } from 'map-sdk-leaflet/es/sdk/ShipxyAPISDK'; interface CanvasShipSymbolOptions { color: string; lineColor: string; lineWidth: number; heightLineColor: string; isSelected?: boolean; maptype?: any; sizeZoom: number; minSilouetteZoom: number; labelImages?: Record; radarOptions: { color: string; lineColor: string; heightLineColor: string; lineWidth: number; iconSize: number; }; } interface CalculatedLabelInfo { center: L.Point; l: L.Point; r: L.Point; x: L.Point; position: number; } interface LabelImage { isDraw: boolean; imgSize: number; imgWidth: number; imgOffset: number; imgTypes: ('monitor' | 'monitor_nosign' | 'satellite' | 'dplus' | 'beidou')[]; } declare type Point = [number, number]; export interface Template { headXY: [number, number]; centerXY: Point; area: Point[]; radius?: number; headLength?: number; name: string; } interface DrawResult { area: Point[]; centerXY: Point; } declare class CanvasShipSymbol extends L.Class { latlng: L.LatLng; ctx: CanvasRenderingContext2D; options: CanvasShipSymbolOptions; shipid: string; mmsi: string; lat: number; lng: number; rotate: number; pointCenterGPS: L.Point; latlngReal: L.LatLng; pointCenterReal: L.Point; templater: Template; _map: MyMap; _ship: CanvasShip; x: number; y: number; state: number; bodyArea: Point[]; head_x: number; head_y: number; constructor(latlng: L.LatLng, map: L.Map, ship: CanvasShip, options?: Partial); drawShipTemplater(): void; /** * 绘制雷达监测范围小红点 在船舶中间 * @param drawDetails * @returns */ drawShipRadar(drawDetails: boolean): this; drawShip(template: Template): this; /** * 绘制标签入口方法初始化canvas等 * @param calcLabel * @param labelImage * @param labelText * @param txtColor * @param font * @param lableRotate * @param lineColor * @param lineFillColor * @param obliqueLineColor * @returns */ drawLable(calcLabel: CalculatedLabelInfo, labelImage: LabelImage, labelText: string, txtColor: string, font: string, lableRotate: number, lineColor: string, lineFillColor: string, obliqueLineColor: string): void; /** * 绘制标签 * @param canvas * @param isDraw * @param labelImage * @param calcLabel * @param labelText * @param txtColor * @param font * @param lableRotate * @param lineColor * @param lineFillColor * @param obliqueLineColor */ private _drawLableCtx; /** * 绘制标签图标 * @param canvas * @param x * @param y * @param radius * @param text */ private _drawIcon; _drawLabelImageMonitor(canvas: CanvasRenderingContext2D, x: number, y: number, radius: number, hasSignature?: boolean): void; /** * 绘制标签图标 * @param canvas * @param imageName * @param x * @param y * @param width * @param height */ _drawLabelImage(canvas: CanvasRenderingContext2D, imageName: string, x: number, y: number, width: number, height: number): void; /** * 绘制标签文字 * @param canvas * @param point * @param text * @param fillStyle * @param font */ _drawText(canvas: CanvasRenderingContext2D, point: L.Point, text: string, fillStyle?: string, font?: string): void; /** * 绘制标签指向线 * @param canvas * @param startPoint * @param endPoint * @param color */ _drawLine(canvas: CanvasRenderingContext2D, startPoint: L.Point, endPoint: L.Point, color?: string): void; /** * 绘制船舶指向线 * @param canvas * @param template * @param strokeStyle */ _drawHeading(canvas: CanvasRenderingContext2D, template: Template, strokeStyle: string): void; /** * 绘制选中船舶对象 * @param canvas * @param shipType * @param position * @param areaLatLng */ _drawShipPos(canvas: CanvasRenderingContext2D, shipType: Template, position: [number, number], areaLatLng: Point[]): void; /** * 绘制最近轨迹 * @param canvas */ _drawTracks(canvas: CanvasRenderingContext2D): void; /** * 绘制船舶符号 * @param canvas * @param centerXY * @param rotate * @param templater * @param options * @returns */ drawPolygon(canvas: CanvasRenderingContext2D, centerXY: Point, rotate: number, templater: Template, options?: { fillStyle?: string; strokeStyle?: string; lineWidth?: number; }): DrawResult | undefined; drawArc(canvas: CanvasRenderingContext2D, point: Point, arcTemplate: Pick, options?: { fillStyle?: string; strokeStyle?: string; lineWidth?: number; }): DrawResult | undefined; } declare const canvasShipSymbol: (canvas: L.LatLng, map: L.Map, ship: CanvasShip, options?: Partial | undefined) => CanvasShipSymbol; export { canvasShipSymbol, CanvasShipSymbol };