|
|
@@ -3,6 +3,7 @@ import 'package:get/get.dart';
|
|
|
import 'package:get/get_core/src/get_main.dart';
|
|
|
import 'package:injectable/injectable.dart';
|
|
|
import 'package:location/base/base_controller.dart';
|
|
|
+import 'package:location/utils/date_util.dart';
|
|
|
import '../../../data/bean/atmob_track_point.dart';
|
|
|
|
|
|
@injectable
|
|
|
@@ -23,11 +24,7 @@ class TrackDetailController extends BaseController {
|
|
|
super.onInit();
|
|
|
final argument = Get.arguments;
|
|
|
if (argument != null && argument is List<AtmobTrackPoint>) {
|
|
|
- if (argument.length >= 2) {
|
|
|
- argument.first.traceType = lineStart;
|
|
|
- argument.last.traceType = lineEnd;
|
|
|
- }
|
|
|
- originPoints.addAll(argument);
|
|
|
+ dealRepeatPoints(argument);
|
|
|
}
|
|
|
}
|
|
|
|
|
|
@@ -37,6 +34,35 @@ class TrackDetailController extends BaseController {
|
|
|
_dealSearchList();
|
|
|
}
|
|
|
|
|
|
+ void dealRepeatPoints(List<AtmobTrackPoint> argument) {
|
|
|
+ List<AtmobTrackPoint> newList = [];
|
|
|
+ AtmobTrackPoint? last;
|
|
|
+ for (int i = 0; i < argument.length; i++) {
|
|
|
+ AtmobTrackPoint point = argument[i];
|
|
|
+ if (i == 0 || i == argument.length - 1) {
|
|
|
+ newList.add(point);
|
|
|
+ continue;
|
|
|
+ }
|
|
|
+ if (last == null) {
|
|
|
+ last = point;
|
|
|
+ newList.add(point);
|
|
|
+ } else if (last.latitude != point.latitude ||
|
|
|
+ last.longitude != point.longitude ||
|
|
|
+ last.addr != point.addr ||
|
|
|
+ DateUtil.isTimeIntRangeExceed(
|
|
|
+ point.time, last.time, Duration(seconds: 30))) {
|
|
|
+ last = point;
|
|
|
+ newList.add(point);
|
|
|
+ }
|
|
|
+ }
|
|
|
+
|
|
|
+ if (newList.length >= 2) {
|
|
|
+ newList.first.traceType = lineStart;
|
|
|
+ newList.last.traceType = lineEnd;
|
|
|
+ }
|
|
|
+ originPoints.assignAll(newList);
|
|
|
+ }
|
|
|
+
|
|
|
void back() {
|
|
|
Get.back();
|
|
|
}
|