@fleet-frontend/mower-maps 0.0.9-beta.7 → 0.0.9-beta.9
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/dist/config/styles.d.ts +1 -1
- package/dist/index.esm.js +62 -35
- package/dist/index.js +62 -35
- package/dist/render/MowerMapRenderer.d.ts.map +1 -1
- package/dist/render/MowerPositionManager.d.ts.map +1 -1
- package/dist/render/layers/PathLayer.d.ts.map +1 -1
- package/dist/types/renderer.d.ts +1 -1
- package/dist/types/renderer.d.ts.map +1 -1
- package/package.json +1 -1
package/dist/config/styles.d.ts
CHANGED
|
@@ -10,7 +10,7 @@ export declare const CHARGING_PILE_STYLES: ChargingPileStyle;
|
|
|
10
10
|
export declare const DOODLE_STYLES: SvgElementStyle;
|
|
11
11
|
export declare const PATH_EDGE_STYLES: {
|
|
12
12
|
lineWidth: 20;
|
|
13
|
-
opacity: 0.
|
|
13
|
+
opacity: 0.6;
|
|
14
14
|
edgeLineColor: string;
|
|
15
15
|
transLineColor: string;
|
|
16
16
|
mowedLineColor: string;
|
package/dist/index.esm.js
CHANGED
|
@@ -67,7 +67,7 @@ const DEFAULT_LINE_WIDTHS = {
|
|
|
67
67
|
const DEFAULT_OPACITIES = {
|
|
68
68
|
FULL: 1.0,
|
|
69
69
|
HIGH: 0.7,
|
|
70
|
-
|
|
70
|
+
MEDIUM: 0.6};
|
|
71
71
|
/**
|
|
72
72
|
* 默认半径设置
|
|
73
73
|
*/
|
|
@@ -1049,7 +1049,6 @@ class PathLayer extends BaseLayer {
|
|
|
1049
1049
|
d += ' Z ';
|
|
1050
1050
|
}
|
|
1051
1051
|
});
|
|
1052
|
-
console.error('svgElements----', svgElements);
|
|
1053
1052
|
// 3. svgElements(直接拼接path字符串,建议逆时针)
|
|
1054
1053
|
if (Array.isArray(svgElements)) {
|
|
1055
1054
|
svgElements.forEach((svgPath) => {
|
|
@@ -1083,7 +1082,7 @@ class PathLayer extends BaseLayer {
|
|
|
1083
1082
|
// 2. 创建一个组,应用 clipPath
|
|
1084
1083
|
const group = document.createElementNS('http://www.w3.org/2000/svg', 'g');
|
|
1085
1084
|
group.setAttribute('clip-path', `url(#${clipPathId})`);
|
|
1086
|
-
group.setAttribute('opacity', '0.
|
|
1085
|
+
group.setAttribute('opacity', '0.6'); // 统一透明度,防止叠加脏乱
|
|
1087
1086
|
// 3. 渲染所有路径
|
|
1088
1087
|
for (const element of this.elements) {
|
|
1089
1088
|
const { id, elements } = element;
|
|
@@ -1519,7 +1518,7 @@ class VisionOffLayer extends BaseLayer {
|
|
|
1519
1518
|
*/
|
|
1520
1519
|
const BOUNDARY_STYLES = {
|
|
1521
1520
|
lineColor: '#ffffff',
|
|
1522
|
-
fillColor: 'rgba(239, 255, 237, 0.
|
|
1521
|
+
fillColor: 'rgba(239, 255, 237, 0.1)', // 更鲜艳的绿色半透明填充,增强可见性
|
|
1523
1522
|
lineWidth: 2,
|
|
1524
1523
|
opacity: DEFAULT_OPACITIES.FULL,
|
|
1525
1524
|
mowingLineColor: 'rgba(99, 216, 174, 1)',
|
|
@@ -1551,10 +1550,10 @@ const DOODLE_STYLES = {
|
|
|
1551
1550
|
};
|
|
1552
1551
|
const PATH_EDGE_STYLES = {
|
|
1553
1552
|
lineWidth: DEFAULT_LINE_WIDTHS.PATH,
|
|
1554
|
-
opacity: DEFAULT_OPACITIES.
|
|
1555
|
-
edgeLineColor: 'rgba(
|
|
1553
|
+
opacity: DEFAULT_OPACITIES.MEDIUM,
|
|
1554
|
+
edgeLineColor: 'rgba(231, 238, 246)',
|
|
1556
1555
|
transLineColor: 'transparent',
|
|
1557
|
-
mowedLineColor: 'rgba(
|
|
1556
|
+
mowedLineColor: 'rgba(231, 238, 246)',
|
|
1558
1557
|
mowingLineColor: 'rgba(123, 200, 187)',
|
|
1559
1558
|
};
|
|
1560
1559
|
const CHANNEL_STYLES = {
|
|
@@ -7300,10 +7299,22 @@ class MowerPositionManager {
|
|
|
7300
7299
|
if (!chargingPilesPositionConfig)
|
|
7301
7300
|
return;
|
|
7302
7301
|
this.mowerPositionConfig = chargingPilesPositionConfig;
|
|
7302
|
+
const positonOutOfRange = isOutOfRange(chargingPilesPositionConfig);
|
|
7303
|
+
const positionInValid = isInvalidPosition(chargingPilesPositionConfig);
|
|
7304
|
+
let postureX = 0;
|
|
7305
|
+
let postureY = 0;
|
|
7306
|
+
let postureTheta = 0;
|
|
7303
7307
|
const lastPosition = this.lastPosition;
|
|
7304
|
-
|
|
7305
|
-
|
|
7306
|
-
|
|
7308
|
+
if (positonOutOfRange || positionInValid) {
|
|
7309
|
+
postureX = lastPosition?.x || 0;
|
|
7310
|
+
postureY = lastPosition?.y || 0;
|
|
7311
|
+
postureTheta = lastPosition?.rotation || 0;
|
|
7312
|
+
}
|
|
7313
|
+
else {
|
|
7314
|
+
postureX = chargingPilesPositionConfig.postureX || 0;
|
|
7315
|
+
postureY = chargingPilesPositionConfig.postureY || 0;
|
|
7316
|
+
postureTheta = chargingPilesPositionConfig.postureTheta || 0;
|
|
7317
|
+
}
|
|
7307
7318
|
console.log('updatePositionByLastPosition->', postureX, postureY, postureTheta, chargingPilesPositionConfig);
|
|
7308
7319
|
// 检查是否需要更新图片
|
|
7309
7320
|
this.updateMowerImage(chargingPilesPositionConfig);
|
|
@@ -7370,17 +7381,8 @@ class MowerPositionManager {
|
|
|
7370
7381
|
const { x: pointX, y: pointY } = convertCoordinate(x, y);
|
|
7371
7382
|
const targetPixelPosition = this.convertMapCoordinateToOverlayPixel(pointX, pointY);
|
|
7372
7383
|
const targetRotation = radToDegree(theta);
|
|
7373
|
-
|
|
7374
|
-
|
|
7375
|
-
postureY: y});
|
|
7376
|
-
const positionValid = isInvalidPosition({
|
|
7377
|
-
postureX: x,
|
|
7378
|
-
postureY: y,
|
|
7379
|
-
postureTheta: theta,
|
|
7380
|
-
});
|
|
7381
|
-
if (!positonOutOfRange && !positionValid) {
|
|
7382
|
-
this.lastPosition = { x, y, rotation: theta };
|
|
7383
|
-
}
|
|
7384
|
+
this.currentPosition = { x: x, y: y, rotation: theta };
|
|
7385
|
+
this.lastPosition = { x, y, rotation: theta };
|
|
7384
7386
|
// console.log('setElementPosition', x, y, theta, targetRotation, positonOutOfRange, positionValid, targetPixelPosition);
|
|
7385
7387
|
if (!this.mowerElement)
|
|
7386
7388
|
return;
|
|
@@ -7407,15 +7409,29 @@ class MowerPositionManager {
|
|
|
7407
7409
|
startAnimationToPosition(positionConfig, duration) {
|
|
7408
7410
|
if (!this.mowerElement || !this.currentPosition)
|
|
7409
7411
|
return;
|
|
7410
|
-
this.startPosition = {
|
|
7411
|
-
...this.currentPosition,
|
|
7412
|
-
rotation: radNormalize(this.currentPosition.rotation),
|
|
7413
|
-
};
|
|
7414
7412
|
this.targetPosition = {
|
|
7415
7413
|
x: positionConfig.postureX,
|
|
7416
7414
|
y: positionConfig.postureY,
|
|
7417
7415
|
rotation: positionConfig.postureTheta,
|
|
7418
7416
|
};
|
|
7417
|
+
const isTargetPositionInvalid = isInvalidPosition({
|
|
7418
|
+
postureX: this.targetPosition.x,
|
|
7419
|
+
postureY: this.targetPosition.y,
|
|
7420
|
+
postureTheta: this.targetPosition.rotation,
|
|
7421
|
+
});
|
|
7422
|
+
const isTargetPositionOutOfRange = isOutOfRange({
|
|
7423
|
+
postureX: this.targetPosition.x,
|
|
7424
|
+
postureY: this.targetPosition.y,
|
|
7425
|
+
postureTheta: this.targetPosition.rotation,
|
|
7426
|
+
});
|
|
7427
|
+
// 如果目标坐标点不合理,则舍弃不使用
|
|
7428
|
+
if (isTargetPositionInvalid || isTargetPositionOutOfRange) {
|
|
7429
|
+
return;
|
|
7430
|
+
}
|
|
7431
|
+
this.startPosition = {
|
|
7432
|
+
...this.currentPosition,
|
|
7433
|
+
rotation: radNormalize(this.currentPosition.rotation),
|
|
7434
|
+
};
|
|
7419
7435
|
this.animationDuration = duration;
|
|
7420
7436
|
this.startTime = window.performance.now();
|
|
7421
7437
|
this.isAnimating = true;
|
|
@@ -7447,7 +7463,7 @@ class MowerPositionManager {
|
|
|
7447
7463
|
* 动画步骤
|
|
7448
7464
|
*/
|
|
7449
7465
|
animateStep() {
|
|
7450
|
-
if (!this.isAnimating || !this.
|
|
7466
|
+
if (!this.isAnimating || !this.targetPosition || !this.startPosition)
|
|
7451
7467
|
return;
|
|
7452
7468
|
const currentTime = window.performance.now();
|
|
7453
7469
|
const elapsed = currentTime - this.startTime;
|
|
@@ -7458,7 +7474,6 @@ class MowerPositionManager {
|
|
|
7458
7474
|
const currentX = this.startPosition.x + this.deltaPosition.x * easedProgress;
|
|
7459
7475
|
const currentY = this.startPosition.y + this.deltaPosition.y * easedProgress;
|
|
7460
7476
|
const currentRotation = this.startPosition.rotation + this.deltaPosition.rotation * easedProgress;
|
|
7461
|
-
this.currentPosition = { x: currentX, y: currentY, rotation: currentRotation };
|
|
7462
7477
|
// 假设在这里进行更新路径数据
|
|
7463
7478
|
if (this.onMowingPositionChange) {
|
|
7464
7479
|
this.onMowingPositionChange({
|
|
@@ -7468,14 +7483,13 @@ class MowerPositionManager {
|
|
|
7468
7483
|
});
|
|
7469
7484
|
}
|
|
7470
7485
|
// console.log('animateStep-->', this.startPosition, this.deltaPosition, this.targetPosition, easedProgress)
|
|
7486
|
+
this.setElementPosition(currentX, currentY, currentRotation);
|
|
7471
7487
|
// 继续动画或结束
|
|
7472
7488
|
if (progress < 1) {
|
|
7473
7489
|
// 设置当前位置
|
|
7474
|
-
this.setElementPosition(currentX, currentY, currentRotation);
|
|
7475
7490
|
this.animationId = window.requestAnimationFrame(() => this.animateStep());
|
|
7476
7491
|
}
|
|
7477
7492
|
else {
|
|
7478
|
-
this.setElementPosition(currentX, currentY, currentRotation);
|
|
7479
7493
|
// 动画完成
|
|
7480
7494
|
this.stopAnimation();
|
|
7481
7495
|
// 通知动画完成
|
|
@@ -9236,17 +9250,31 @@ const MowerMapRenderer = forwardRef(({ mapConfig, modelType, mapRef, mapJson, pa
|
|
|
9236
9250
|
setMowPartitionData(mowingPartition);
|
|
9237
9251
|
curMowPartitionData = mowingPartition;
|
|
9238
9252
|
}
|
|
9253
|
+
const positionData = realTimeData?.find(item => item?.type === RealTimeDataType.LOCATION);
|
|
9239
9254
|
const statusData = realTimeData?.find(item => item?.type === RealTimeDataType.STATUS);
|
|
9240
|
-
|
|
9255
|
+
console.log('current->1', positionData, statusData);
|
|
9256
|
+
if (statusData || positionData) {
|
|
9257
|
+
const currentStatus = statusData?.vehicleState || positionData?.vehicleState;
|
|
9241
9258
|
// 车辆回桩不会回传最后的park的位置,所以根据实时数据的状态数据判断车辆回到桩上
|
|
9242
|
-
if ([RobotStatus.CHARGING, RobotStatus.PARKED].includes(
|
|
9259
|
+
if ([RobotStatus.CHARGING, RobotStatus.PARKED].includes(currentStatus || RobotStatus.UNKNOWN)) {
|
|
9243
9260
|
resetInCharginPie();
|
|
9244
9261
|
}
|
|
9245
|
-
else if (
|
|
9262
|
+
else if (currentStatus === RobotStatus.WORKING) {
|
|
9246
9263
|
// 兜底收不到割草地块的实时数据,使用状态来兜底
|
|
9247
9264
|
overlayRef.current.resetBorderLayerHighlight();
|
|
9248
|
-
setMowPartitionData(
|
|
9249
|
-
curMowPartitionData =
|
|
9265
|
+
setMowPartitionData(null);
|
|
9266
|
+
curMowPartitionData = null;
|
|
9267
|
+
}
|
|
9268
|
+
else if (currentStatus === RobotStatus.MOWING && (curMowPartitionData && !curMowPartitionData?.partitionIds)) {
|
|
9269
|
+
// 如果当前是割草状态,但是地块数据初始化过且不存在则认为是全局割草,则把所有地块都高亮
|
|
9270
|
+
const allPartitionIds = mapJson?.sub_maps?.map(item => item?.id);
|
|
9271
|
+
console.log('allPartitionIds->', allPartitionIds, mapJson);
|
|
9272
|
+
setMowPartitionData({
|
|
9273
|
+
partitionIds: allPartitionIds
|
|
9274
|
+
});
|
|
9275
|
+
curMowPartitionData = {
|
|
9276
|
+
partitionIds: allPartitionIds
|
|
9277
|
+
};
|
|
9250
9278
|
}
|
|
9251
9279
|
}
|
|
9252
9280
|
if (!mapJson ||
|
|
@@ -9257,7 +9285,6 @@ const MowerMapRenderer = forwardRef(({ mapConfig, modelType, mapRef, mapJson, pa
|
|
|
9257
9285
|
// TODO:需要根据返回的数据,处理车辆的移动位置
|
|
9258
9286
|
console.log('realTimeData----->', realTimeData, curMowPartitionData);
|
|
9259
9287
|
if (curMowPartitionData) {
|
|
9260
|
-
setMowPartitionData(curMowPartitionData);
|
|
9261
9288
|
const isMowing = curMowPartitionData?.partitionIds && curMowPartitionData.partitionIds.length > 0;
|
|
9262
9289
|
overlayRef.current.updateMowPartitionData(curMowPartitionData);
|
|
9263
9290
|
console.log('isMowing', isMowing, curMowPartitionData);
|
package/dist/index.js
CHANGED
|
@@ -69,7 +69,7 @@ const DEFAULT_LINE_WIDTHS = {
|
|
|
69
69
|
const DEFAULT_OPACITIES = {
|
|
70
70
|
FULL: 1.0,
|
|
71
71
|
HIGH: 0.7,
|
|
72
|
-
|
|
72
|
+
MEDIUM: 0.6};
|
|
73
73
|
/**
|
|
74
74
|
* 默认半径设置
|
|
75
75
|
*/
|
|
@@ -1051,7 +1051,6 @@ class PathLayer extends BaseLayer {
|
|
|
1051
1051
|
d += ' Z ';
|
|
1052
1052
|
}
|
|
1053
1053
|
});
|
|
1054
|
-
console.error('svgElements----', svgElements);
|
|
1055
1054
|
// 3. svgElements(直接拼接path字符串,建议逆时针)
|
|
1056
1055
|
if (Array.isArray(svgElements)) {
|
|
1057
1056
|
svgElements.forEach((svgPath) => {
|
|
@@ -1085,7 +1084,7 @@ class PathLayer extends BaseLayer {
|
|
|
1085
1084
|
// 2. 创建一个组,应用 clipPath
|
|
1086
1085
|
const group = document.createElementNS('http://www.w3.org/2000/svg', 'g');
|
|
1087
1086
|
group.setAttribute('clip-path', `url(#${clipPathId})`);
|
|
1088
|
-
group.setAttribute('opacity', '0.
|
|
1087
|
+
group.setAttribute('opacity', '0.6'); // 统一透明度,防止叠加脏乱
|
|
1089
1088
|
// 3. 渲染所有路径
|
|
1090
1089
|
for (const element of this.elements) {
|
|
1091
1090
|
const { id, elements } = element;
|
|
@@ -1521,7 +1520,7 @@ class VisionOffLayer extends BaseLayer {
|
|
|
1521
1520
|
*/
|
|
1522
1521
|
const BOUNDARY_STYLES = {
|
|
1523
1522
|
lineColor: '#ffffff',
|
|
1524
|
-
fillColor: 'rgba(239, 255, 237, 0.
|
|
1523
|
+
fillColor: 'rgba(239, 255, 237, 0.1)', // 更鲜艳的绿色半透明填充,增强可见性
|
|
1525
1524
|
lineWidth: 2,
|
|
1526
1525
|
opacity: DEFAULT_OPACITIES.FULL,
|
|
1527
1526
|
mowingLineColor: 'rgba(99, 216, 174, 1)',
|
|
@@ -1553,10 +1552,10 @@ const DOODLE_STYLES = {
|
|
|
1553
1552
|
};
|
|
1554
1553
|
const PATH_EDGE_STYLES = {
|
|
1555
1554
|
lineWidth: DEFAULT_LINE_WIDTHS.PATH,
|
|
1556
|
-
opacity: DEFAULT_OPACITIES.
|
|
1557
|
-
edgeLineColor: 'rgba(
|
|
1555
|
+
opacity: DEFAULT_OPACITIES.MEDIUM,
|
|
1556
|
+
edgeLineColor: 'rgba(231, 238, 246)',
|
|
1558
1557
|
transLineColor: 'transparent',
|
|
1559
|
-
mowedLineColor: 'rgba(
|
|
1558
|
+
mowedLineColor: 'rgba(231, 238, 246)',
|
|
1560
1559
|
mowingLineColor: 'rgba(123, 200, 187)',
|
|
1561
1560
|
};
|
|
1562
1561
|
const CHANNEL_STYLES = {
|
|
@@ -7302,10 +7301,22 @@ class MowerPositionManager {
|
|
|
7302
7301
|
if (!chargingPilesPositionConfig)
|
|
7303
7302
|
return;
|
|
7304
7303
|
this.mowerPositionConfig = chargingPilesPositionConfig;
|
|
7304
|
+
const positonOutOfRange = isOutOfRange(chargingPilesPositionConfig);
|
|
7305
|
+
const positionInValid = isInvalidPosition(chargingPilesPositionConfig);
|
|
7306
|
+
let postureX = 0;
|
|
7307
|
+
let postureY = 0;
|
|
7308
|
+
let postureTheta = 0;
|
|
7305
7309
|
const lastPosition = this.lastPosition;
|
|
7306
|
-
|
|
7307
|
-
|
|
7308
|
-
|
|
7310
|
+
if (positonOutOfRange || positionInValid) {
|
|
7311
|
+
postureX = lastPosition?.x || 0;
|
|
7312
|
+
postureY = lastPosition?.y || 0;
|
|
7313
|
+
postureTheta = lastPosition?.rotation || 0;
|
|
7314
|
+
}
|
|
7315
|
+
else {
|
|
7316
|
+
postureX = chargingPilesPositionConfig.postureX || 0;
|
|
7317
|
+
postureY = chargingPilesPositionConfig.postureY || 0;
|
|
7318
|
+
postureTheta = chargingPilesPositionConfig.postureTheta || 0;
|
|
7319
|
+
}
|
|
7309
7320
|
console.log('updatePositionByLastPosition->', postureX, postureY, postureTheta, chargingPilesPositionConfig);
|
|
7310
7321
|
// 检查是否需要更新图片
|
|
7311
7322
|
this.updateMowerImage(chargingPilesPositionConfig);
|
|
@@ -7372,17 +7383,8 @@ class MowerPositionManager {
|
|
|
7372
7383
|
const { x: pointX, y: pointY } = convertCoordinate(x, y);
|
|
7373
7384
|
const targetPixelPosition = this.convertMapCoordinateToOverlayPixel(pointX, pointY);
|
|
7374
7385
|
const targetRotation = radToDegree(theta);
|
|
7375
|
-
|
|
7376
|
-
|
|
7377
|
-
postureY: y});
|
|
7378
|
-
const positionValid = isInvalidPosition({
|
|
7379
|
-
postureX: x,
|
|
7380
|
-
postureY: y,
|
|
7381
|
-
postureTheta: theta,
|
|
7382
|
-
});
|
|
7383
|
-
if (!positonOutOfRange && !positionValid) {
|
|
7384
|
-
this.lastPosition = { x, y, rotation: theta };
|
|
7385
|
-
}
|
|
7386
|
+
this.currentPosition = { x: x, y: y, rotation: theta };
|
|
7387
|
+
this.lastPosition = { x, y, rotation: theta };
|
|
7386
7388
|
// console.log('setElementPosition', x, y, theta, targetRotation, positonOutOfRange, positionValid, targetPixelPosition);
|
|
7387
7389
|
if (!this.mowerElement)
|
|
7388
7390
|
return;
|
|
@@ -7409,15 +7411,29 @@ class MowerPositionManager {
|
|
|
7409
7411
|
startAnimationToPosition(positionConfig, duration) {
|
|
7410
7412
|
if (!this.mowerElement || !this.currentPosition)
|
|
7411
7413
|
return;
|
|
7412
|
-
this.startPosition = {
|
|
7413
|
-
...this.currentPosition,
|
|
7414
|
-
rotation: radNormalize(this.currentPosition.rotation),
|
|
7415
|
-
};
|
|
7416
7414
|
this.targetPosition = {
|
|
7417
7415
|
x: positionConfig.postureX,
|
|
7418
7416
|
y: positionConfig.postureY,
|
|
7419
7417
|
rotation: positionConfig.postureTheta,
|
|
7420
7418
|
};
|
|
7419
|
+
const isTargetPositionInvalid = isInvalidPosition({
|
|
7420
|
+
postureX: this.targetPosition.x,
|
|
7421
|
+
postureY: this.targetPosition.y,
|
|
7422
|
+
postureTheta: this.targetPosition.rotation,
|
|
7423
|
+
});
|
|
7424
|
+
const isTargetPositionOutOfRange = isOutOfRange({
|
|
7425
|
+
postureX: this.targetPosition.x,
|
|
7426
|
+
postureY: this.targetPosition.y,
|
|
7427
|
+
postureTheta: this.targetPosition.rotation,
|
|
7428
|
+
});
|
|
7429
|
+
// 如果目标坐标点不合理,则舍弃不使用
|
|
7430
|
+
if (isTargetPositionInvalid || isTargetPositionOutOfRange) {
|
|
7431
|
+
return;
|
|
7432
|
+
}
|
|
7433
|
+
this.startPosition = {
|
|
7434
|
+
...this.currentPosition,
|
|
7435
|
+
rotation: radNormalize(this.currentPosition.rotation),
|
|
7436
|
+
};
|
|
7421
7437
|
this.animationDuration = duration;
|
|
7422
7438
|
this.startTime = window.performance.now();
|
|
7423
7439
|
this.isAnimating = true;
|
|
@@ -7449,7 +7465,7 @@ class MowerPositionManager {
|
|
|
7449
7465
|
* 动画步骤
|
|
7450
7466
|
*/
|
|
7451
7467
|
animateStep() {
|
|
7452
|
-
if (!this.isAnimating || !this.
|
|
7468
|
+
if (!this.isAnimating || !this.targetPosition || !this.startPosition)
|
|
7453
7469
|
return;
|
|
7454
7470
|
const currentTime = window.performance.now();
|
|
7455
7471
|
const elapsed = currentTime - this.startTime;
|
|
@@ -7460,7 +7476,6 @@ class MowerPositionManager {
|
|
|
7460
7476
|
const currentX = this.startPosition.x + this.deltaPosition.x * easedProgress;
|
|
7461
7477
|
const currentY = this.startPosition.y + this.deltaPosition.y * easedProgress;
|
|
7462
7478
|
const currentRotation = this.startPosition.rotation + this.deltaPosition.rotation * easedProgress;
|
|
7463
|
-
this.currentPosition = { x: currentX, y: currentY, rotation: currentRotation };
|
|
7464
7479
|
// 假设在这里进行更新路径数据
|
|
7465
7480
|
if (this.onMowingPositionChange) {
|
|
7466
7481
|
this.onMowingPositionChange({
|
|
@@ -7470,14 +7485,13 @@ class MowerPositionManager {
|
|
|
7470
7485
|
});
|
|
7471
7486
|
}
|
|
7472
7487
|
// console.log('animateStep-->', this.startPosition, this.deltaPosition, this.targetPosition, easedProgress)
|
|
7488
|
+
this.setElementPosition(currentX, currentY, currentRotation);
|
|
7473
7489
|
// 继续动画或结束
|
|
7474
7490
|
if (progress < 1) {
|
|
7475
7491
|
// 设置当前位置
|
|
7476
|
-
this.setElementPosition(currentX, currentY, currentRotation);
|
|
7477
7492
|
this.animationId = window.requestAnimationFrame(() => this.animateStep());
|
|
7478
7493
|
}
|
|
7479
7494
|
else {
|
|
7480
|
-
this.setElementPosition(currentX, currentY, currentRotation);
|
|
7481
7495
|
// 动画完成
|
|
7482
7496
|
this.stopAnimation();
|
|
7483
7497
|
// 通知动画完成
|
|
@@ -9238,17 +9252,31 @@ const MowerMapRenderer = React.forwardRef(({ mapConfig, modelType, mapRef, mapJs
|
|
|
9238
9252
|
setMowPartitionData(mowingPartition);
|
|
9239
9253
|
curMowPartitionData = mowingPartition;
|
|
9240
9254
|
}
|
|
9255
|
+
const positionData = realTimeData?.find(item => item?.type === RealTimeDataType.LOCATION);
|
|
9241
9256
|
const statusData = realTimeData?.find(item => item?.type === RealTimeDataType.STATUS);
|
|
9242
|
-
|
|
9257
|
+
console.log('current->1', positionData, statusData);
|
|
9258
|
+
if (statusData || positionData) {
|
|
9259
|
+
const currentStatus = statusData?.vehicleState || positionData?.vehicleState;
|
|
9243
9260
|
// 车辆回桩不会回传最后的park的位置,所以根据实时数据的状态数据判断车辆回到桩上
|
|
9244
|
-
if ([RobotStatus.CHARGING, RobotStatus.PARKED].includes(
|
|
9261
|
+
if ([RobotStatus.CHARGING, RobotStatus.PARKED].includes(currentStatus || RobotStatus.UNKNOWN)) {
|
|
9245
9262
|
resetInCharginPie();
|
|
9246
9263
|
}
|
|
9247
|
-
else if (
|
|
9264
|
+
else if (currentStatus === RobotStatus.WORKING) {
|
|
9248
9265
|
// 兜底收不到割草地块的实时数据,使用状态来兜底
|
|
9249
9266
|
overlayRef.current.resetBorderLayerHighlight();
|
|
9250
|
-
setMowPartitionData(
|
|
9251
|
-
curMowPartitionData =
|
|
9267
|
+
setMowPartitionData(null);
|
|
9268
|
+
curMowPartitionData = null;
|
|
9269
|
+
}
|
|
9270
|
+
else if (currentStatus === RobotStatus.MOWING && (curMowPartitionData && !curMowPartitionData?.partitionIds)) {
|
|
9271
|
+
// 如果当前是割草状态,但是地块数据初始化过且不存在则认为是全局割草,则把所有地块都高亮
|
|
9272
|
+
const allPartitionIds = mapJson?.sub_maps?.map(item => item?.id);
|
|
9273
|
+
console.log('allPartitionIds->', allPartitionIds, mapJson);
|
|
9274
|
+
setMowPartitionData({
|
|
9275
|
+
partitionIds: allPartitionIds
|
|
9276
|
+
});
|
|
9277
|
+
curMowPartitionData = {
|
|
9278
|
+
partitionIds: allPartitionIds
|
|
9279
|
+
};
|
|
9252
9280
|
}
|
|
9253
9281
|
}
|
|
9254
9282
|
if (!mapJson ||
|
|
@@ -9259,7 +9287,6 @@ const MowerMapRenderer = React.forwardRef(({ mapConfig, modelType, mapRef, mapJs
|
|
|
9259
9287
|
// TODO:需要根据返回的数据,处理车辆的移动位置
|
|
9260
9288
|
console.log('realTimeData----->', realTimeData, curMowPartitionData);
|
|
9261
9289
|
if (curMowPartitionData) {
|
|
9262
|
-
setMowPartitionData(curMowPartitionData);
|
|
9263
9290
|
const isMowing = curMowPartitionData?.partitionIds && curMowPartitionData.partitionIds.length > 0;
|
|
9264
9291
|
overlayRef.current.updateMowPartitionData(curMowPartitionData);
|
|
9265
9292
|
console.log('isMowing', isMowing, curMowPartitionData);
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"MowerMapRenderer.d.ts","sourceRoot":"","sources":["../../src/render/MowerMapRenderer.tsx"],"names":[],"mappings":"AAAA,OAAO,KAQN,MAAM,OAAO,CAAC;AA4Cf,OAAO,EAAa,qBAAqB,EAAE,mBAAmB,EAAE,MAAM,mBAAmB,CAAC;AAO1F,OAAO,CAAC,MAAM,CAAC;IACb,UAAU,MAAM;QACd,MAAM,EAAE,GAAG,CAAC;KACb;CACF;AAgGD,eAAO,MAAM,gBAAgB,
|
|
1
|
+
{"version":3,"file":"MowerMapRenderer.d.ts","sourceRoot":"","sources":["../../src/render/MowerMapRenderer.tsx"],"names":[],"mappings":"AAAA,OAAO,KAQN,MAAM,OAAO,CAAC;AA4Cf,OAAO,EAAa,qBAAqB,EAAE,mBAAmB,EAAE,MAAM,mBAAmB,CAAC;AAO1F,OAAO,CAAC,MAAM,CAAC;IACb,UAAU,MAAM;QACd,MAAM,EAAE,GAAG,CAAC;KACb;CACF;AAgGD,eAAO,MAAM,gBAAgB,mGAmtB5B,CAAC;AAIF,eAAe,gBAAgB,CAAC;AAChC,YAAY,EAAE,qBAAqB,EAAE,mBAAmB,EAAE,CAAC"}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"MowerPositionManager.d.ts","sourceRoot":"","sources":["../../src/render/MowerPositionManager.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,mBAAmB,EAAE,MAAM,mBAAmB,CAAC;AACxD,OAAO,EAAE,UAAU,EAAE,MAAM,cAAc,CAAC;AAE1C,OAAO,EAKL,WAAW,EACZ,MAAM,UAAU,CAAC;AAElB,qBAAa,oBAAoB;IAC/B,OAAO,CAAC,OAAO,CAAa;IAC5B,OAAO,CAAC,SAAS,CAAC,CAAS;IAC3B,OAAO,CAAC,mBAAmB,CAAsB;IACjD,OAAO,CAAC,SAAS,CAA4B;IAC7C,OAAO,CAAC,UAAU,CAA4B;IAC9C,OAAO,CAAC,YAAY,CAA4B;IAEhD,OAAO,CAAC,aAAa,CAAiB;IAGtC,OAAO,CAAC,WAAW,CAAuB;IAC1C,OAAO,CAAC,WAAW,CAAkB;IACrC,OAAO,CAAC,SAAS,CAAa;IAC9B,OAAO,CAAC,iBAAiB,CAAa;IACtC,OAAO,CAAC,YAAY,CAA2D;IAC/E,OAAO,CAAC,aAAa,CAA2D;IAChF,OAAO,CAAC,eAAe,CAA2D;IAClF,OAAO,CAAC,cAAc,CAA2D;IACjF,OAAO,CAAC,aAAa,CAA2D;IAChF,OAAO,CAAC,eAAe,CAAkB;IACzC,OAAO,CAAC,mBAAmB,CAAC,CAAa;IACzC,OAAO,CAAC,sBAAsB,CAAC,CAIpB;gBAGT,OAAO,EAAE,UAAU,EACnB,mBAAmB,EAAE,mBAAmB,EACxC,SAAS,EAAE,MAAM,EACjB,UAAU,EAAE,WAAW,EACvB,mBAAmB,CAAC,EAAE,MAAM,IAAI,EAChC,sBAAsB,CAAC,EAAE,CAAC,YAAY,EAAE;QACtC,CAAC,EAAE,MAAM,CAAC;QACV,CAAC,EAAE,MAAM,CAAC;QACV,YAAY,EAAE,WAAW,CAAC;KAC3B,KAAK,IAAI;IAWZ,IAAI,aAAa,YAEhB;IAED;;OAEG;IACH,OAAO,CAAC,mBAAmB;IAe3B;;OAEG;IACH,OAAO,CAAC,kBAAkB;IAkC1B;;OAEG;IACH,aAAa,CAAC,UAAU,EAAE,WAAW;IAIrC;;OAEG;IACH,UAAU,IAAI,WAAW,GAAG,IAAI;IAIhC;;OAEG;IACH,4BAA4B,CAC1B,2BAA2B,CAAC,EAAE,mBAAmB;
|
|
1
|
+
{"version":3,"file":"MowerPositionManager.d.ts","sourceRoot":"","sources":["../../src/render/MowerPositionManager.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,mBAAmB,EAAE,MAAM,mBAAmB,CAAC;AACxD,OAAO,EAAE,UAAU,EAAE,MAAM,cAAc,CAAC;AAE1C,OAAO,EAKL,WAAW,EACZ,MAAM,UAAU,CAAC;AAElB,qBAAa,oBAAoB;IAC/B,OAAO,CAAC,OAAO,CAAa;IAC5B,OAAO,CAAC,SAAS,CAAC,CAAS;IAC3B,OAAO,CAAC,mBAAmB,CAAsB;IACjD,OAAO,CAAC,SAAS,CAA4B;IAC7C,OAAO,CAAC,UAAU,CAA4B;IAC9C,OAAO,CAAC,YAAY,CAA4B;IAEhD,OAAO,CAAC,aAAa,CAAiB;IAGtC,OAAO,CAAC,WAAW,CAAuB;IAC1C,OAAO,CAAC,WAAW,CAAkB;IACrC,OAAO,CAAC,SAAS,CAAa;IAC9B,OAAO,CAAC,iBAAiB,CAAa;IACtC,OAAO,CAAC,YAAY,CAA2D;IAC/E,OAAO,CAAC,aAAa,CAA2D;IAChF,OAAO,CAAC,eAAe,CAA2D;IAClF,OAAO,CAAC,cAAc,CAA2D;IACjF,OAAO,CAAC,aAAa,CAA2D;IAChF,OAAO,CAAC,eAAe,CAAkB;IACzC,OAAO,CAAC,mBAAmB,CAAC,CAAa;IACzC,OAAO,CAAC,sBAAsB,CAAC,CAIpB;gBAGT,OAAO,EAAE,UAAU,EACnB,mBAAmB,EAAE,mBAAmB,EACxC,SAAS,EAAE,MAAM,EACjB,UAAU,EAAE,WAAW,EACvB,mBAAmB,CAAC,EAAE,MAAM,IAAI,EAChC,sBAAsB,CAAC,EAAE,CAAC,YAAY,EAAE;QACtC,CAAC,EAAE,MAAM,CAAC;QACV,CAAC,EAAE,MAAM,CAAC;QACV,YAAY,EAAE,WAAW,CAAC;KAC3B,KAAK,IAAI;IAWZ,IAAI,aAAa,YAEhB;IAED;;OAEG;IACH,OAAO,CAAC,mBAAmB;IAe3B;;OAEG;IACH,OAAO,CAAC,kBAAkB;IAkC1B;;OAEG;IACH,aAAa,CAAC,UAAU,EAAE,WAAW;IAIrC;;OAEG;IACH,UAAU,IAAI,WAAW,GAAG,IAAI;IAIhC;;OAEG;IACH,4BAA4B,CAC1B,2BAA2B,CAAC,EAAE,mBAAmB;IAmCnD;;OAEG;IACH,cAAc,CAAC,cAAc,EAAE,mBAAmB,EAAE,aAAa,GAAE,MAAU;IA+C7E;;OAEG;IACH,OAAO,CAAC,gBAAgB;IAgBxB;;OAEG;IACH,OAAO,CAAC,kBAAkB;IAmB1B;;OAEG;IACH,OAAO,CAAC,aAAa;IAWrB;;OAEG;IACH,OAAO,CAAC,wBAAwB;IAkEhC,mBAAmB;IAKnB;;OAEG;IACH,OAAO,CAAC,WAAW;IA4CnB;;OAEG;IACH,OAAO,CAAC,IAAI;IAIZ;;OAEG;IACH,OAAO,CAAC,kCAAkC;IA6B1C;;OAEG;IACH,UAAU,CAAC,OAAO,EAAE,OAAO;IAQ3B;;OAEG;IACH,OAAO;CAWR"}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"PathLayer.d.ts","sourceRoot":"","sources":["../../../src/render/layers/PathLayer.ts"],"names":[],"mappings":"AAGA,OAAO,EAAE,SAAS,EAAE,MAAM,aAAa,CAAC;AAGxC;;;GAGG;AACH,qBAAa,SAAU,SAAQ,SAAS;IACtC,KAAK,EAAE,MAAM,CAAK;IAClB,KAAK,EAAE,MAAM,CAAK;IAClB,SAAS,EAAE,MAAM,CAAK;IACtB,aAAa,EAAE,GAAG,CAAM;;IAOxB;;OAEG;IACH,OAAO,CAAC,mBAAmB;
|
|
1
|
+
{"version":3,"file":"PathLayer.d.ts","sourceRoot":"","sources":["../../../src/render/layers/PathLayer.ts"],"names":[],"mappings":"AAGA,OAAO,EAAE,SAAS,EAAE,MAAM,aAAa,CAAC;AAGxC;;;GAGG;AACH,qBAAa,SAAU,SAAQ,SAAS;IACtC,KAAK,EAAE,MAAM,CAAK;IAClB,KAAK,EAAE,MAAM,CAAK;IAClB,SAAS,EAAE,MAAM,CAAK;IACtB,aAAa,EAAE,GAAG,CAAM;;IAOxB;;OAEG;IACH,OAAO,CAAC,mBAAmB;IAiE3B;;OAEG;IACI,OAAO,CAAC,QAAQ,EAAE,WAAW,EAAE,KAAK,EAAE,MAAM,EAAE,SAAS,EAAE,MAAM,GAAG,IAAI;IA4B7E;;OAEG;IACH,OAAO,CAAC,iBAAiB;CAiC1B"}
|
package/dist/types/renderer.d.ts
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"renderer.d.ts","sourceRoot":"","sources":["../../src/types/renderer.ts"],"names":[],"mappings":"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
|
|
1
|
+
{"version":3,"file":"renderer.d.ts","sourceRoot":"","sources":["../../src/types/renderer.ts"],"names":[],"mappings":"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"}
|