@fleet-frontend/mower-maps
Version:
a mower maps in google maps
97 lines • 2.59 kB
TypeScript
import { MowerPositionConfig } from '../types/renderer';
import { SvgMapView } from './SvgMapView';
import { RobotStatus } from '../utils';
export declare class MowerPositionManager {
private svgView;
private modelType?;
private mowerPositionConfig;
private container;
private overlayDiv;
private mowerElement;
private hasEdger;
private divBox;
private animationId;
private isAnimating;
private startTime;
private animationDuration;
private lastPosition;
private startPosition;
private currentPosition;
private targetPosition;
private deltaPosition;
private onlyUpdateTheta;
private onAnimationComplete?;
private onMowingPositionChange?;
constructor(svgView: SvgMapView, mowerPositionConfig: MowerPositionConfig, modelType: string, overlayDiv: HTMLElement, onAnimationComplete?: () => void, onMowingPositionChange?: (positionData: {
x: number;
y: number;
vehicleState: RobotStatus;
}) => void);
get animationFlag(): boolean;
/**
* 初始化容器
*/
private initializeContainer;
/**
* 创建割草机元素
*/
private createMowerElement;
/**
* 设置叠加层div引用(用于坐标转换)
*/
setOverlayDiv(overlayDiv: HTMLElement): void;
/**
* 获取容器元素
*/
getElement(): HTMLElement | null;
setEdger(edger: any): void;
/**
* 根据最后一次有效的位置更新数据
*/
updatePositionByLastPosition(divBox: {
w: number;
h: number;
}, chargingPilesPositionConfig?: MowerPositionConfig): void;
/**
* 更新割草机位置
*/
updatePosition(positionConfig: MowerPositionConfig, animationTime?: number): void;
/**
* 更新割草机图片
*/
private updateMowerImage;
/**
* 直接设置元素位置(无动画)
*/
private setElementPosition;
/**
* 停止当前动画
*/
private stopAnimation;
/**
* 开始动画到指定位置
*/
private startAnimationToPosition;
forceUpdatePosition(divW: number, divH: number): void;
/**
* 动画步骤
*/
private animateStep;
/**
* 线性插值函数
*/
private lerp;
/**
* 将地图坐标转换为叠加层像素坐标
*/
private convertMapCoordinateToOverlayPixel;
/**
* 显示/隐藏割草机
*/
setVisible(visible: boolean): void;
/**
* 销毁管理器
*/
destroy(): void;
}
//# sourceMappingURL=MowerPositionManager.d.ts.map