9class RouteManagerExample {
16 RouteManagerExample() {
18 _setupRouteListener();
24 void _initializeSdk() {
57 print(
"LocationManager, NavigationManager and RouteManager successfully initialized");
60 print(
"Error initializing SDK: $e");
67 void _setupRouteListener() {
70 onPathsUpdated: (List<RoutePath> paths) {
71 print(
"Routes updated successfully");
72 _demonstrateRoutePathUsage(paths);
83 print(
"RouteManager not initialized");
102 print(
"Current graph tag: $currentGraphTag");
108 print(
"Available graph tags: $graphTags");
112 Point startPoint = Point(x: 10.0, y: 20.0);
113 Point endPoint = Point(x: 50.0, y: 60.0);
114 LocationPoint startLocationPoint = LocationPoint(point: startPoint, locationId: 12345, sublocationId: 1);
115 LocationPoint endLocationPoint = LocationPoint(point: endPoint, locationId: 12345, sublocationId: 1);
119 RoutePath routePath =
_routeManager!.makeRoute(startLocationPoint, endLocationPoint);
120 print(
"Route created with length: ${routePath.length} meters");
125 List<LocationPoint> destinations = [
126 LocationPoint(point: Point(x: 30.0, y: 40.0), locationId: 12345, sublocationId: 1),
127 LocationPoint(point: Point(x: 70.0, y: 80.0), locationId: 12345, sublocationId: 1),
129 List<RoutePath> routePaths =
_routeManager!.makeRoutes(startLocationPoint, destinations);
130 print(
"Created ${routePaths.length} routes");
140 LocationPoint additionalTarget = LocationPoint(point: Point(x: 90.0, y: 100.0), locationId: 12345, sublocationId: 1);
158 void _demonstrateRoutePathUsage(List<RoutePath> paths) {
159 for (
int i = 0; i < paths.length; i++) {
160 RoutePath path = paths[i];
161 print(
"=== Route Path ${i + 1} ===");
165 double length = path.
length;
166 print(
"Route length: $length meters");
171 double weight = path.
weight;
172 print(
"Route weight: $weight");
177 List<RouteNode> nodes = path.
nodes;
178 print(
"Route has ${nodes.length} nodes");
179 for (
int j = 0; j < nodes.length; j++) {
180 _demonstrateRouteNodeUsage(nodes[j]);
186 RoutePath? headPath = path.
head(10.0);
187 if (headPath !=
null) {
188 print(
"Head path length: ${headPath.length} meters");
194 RoutePath? tailPath = path.
tail(10.0);
195 if (tailPath !=
null) {
196 print(
"Tail path length: ${tailPath.length} meters");
202 void _demonstrateRouteNodeUsage(RouteNode node) {
204 LocationPoint point = node.
point;
205 _demonstrateLocationPointUsage(point);
209 double weight = node.
weight;
210 print(
"Node weight: $weight");
215 print(
"Node distance: $distance meters");
219 List<RouteEvent> events = node.
events;
220 print(
"Node has ${events.length} events");
221 for (
final event in events) {
222 _demonstrateRouteEventUsage(event);
230 void _demonstrateRouteEventUsage(RouteEvent event) {
233 RouteEventType type =
event.type;
234 print(
"Event type: $type");
238 TurnEvent? turnEvent =
event.turnEvent;
239 if (turnEvent !=
null) {
240 _demonstrateTurnEventUsage(turnEvent);
245 TransitionEntryEvent? entryEvent =
event.transitionEntryEvent;
246 if (entryEvent !=
null) {
247 _demonstrateTransitionEntryEventUsage(entryEvent);
252 TransitionExitEvent? exitEvent =
event.transitionExitEvent;
253 if (exitEvent !=
null) {
254 _demonstrateTransitionExitEventUsage(exitEvent);
259 TargetReachedEvent? reachedEvent =
event.targetReachedEvent;
260 if (reachedEvent !=
null) {
261 _demonstrateTargetReachedEventUsage(reachedEvent);
272 print(
"Available route event types:");
273 print(
" - RouteEventType.TURN_LEFT: ${RouteEventType.TURN_LEFT}");
274 print(
" - RouteEventType.TURN_RIGHT: ${RouteEventType.TURN_RIGHT}");
275 print(
" - RouteEventType.TRANSITION: ${RouteEventType.TRANSITION}");
281 print(
"Available turn types:");
282 for (
final type in TurnType.values) {
288 void _demonstrateTurnEventUsage(TurnEvent event) {
290 TurnType type =
event.type;
291 print(
"Turn type: $type");
295 int angle =
event.angle;
296 print(
"Turn angle: $angle");
300 void _demonstrateTransitionEntryEventUsage(TransitionEntryEvent event) {
302 int from =
event.from;
303 print(
"Transition entry from: $from");
308 print(
"Transition entry to: $to");
312 void _demonstrateTransitionExitEventUsage(TransitionExitEvent event) {
314 int from =
event.from;
315 print(
"Transition exit from: $from");
320 print(
"Transition exit to: $to");
324 void _demonstrateTargetReachedEventUsage(TargetReachedEvent event) {
326 int index =
event.index;
327 print(
"Reached target index: $index");
331 LocationPoint point =
event.
point;
332 _demonstrateLocationPointUsage(point);
339 void _demonstrateLocationPointUsage(LocationPoint locationPoint) {
342 Point? point = locationPoint.
point;
344 _demonstratePointUsage(point);
351 print(
"Location ID: $locationId");
357 print(
"Sublocation ID: $sublocationId");
362 Point newPoint = Point(x: 15.0, y: 25.0);
363 LocationPoint newLocationPoint = LocationPoint(point: newPoint, locationId: locationId, sublocationId: sublocationId);
364 print(
"Created new LocationPoint: $newLocationPoint");
371 void _demonstratePointUsage(Point point) {
375 print(
"Point X: $x");
381 print(
"Point Y: $y");
386 Point newPoint = Point(x: x, y: y);
387 print(
"Created new Point: $newPoint");
395 print(
"=== Advanced Routing Features ===");
402 List<String> graphTags = [
"main",
"elevator",
"stairs"];
404 for (String tag in graphTags) {
410 print(
"Routing with graph tag: $tag");
413 Point startPoint = Point(x: 0.0, y: 0.0);
414 Point endPoint = Point(x: 100.0, y: 100.0);
415 LocationPoint startLocationPoint = LocationPoint(point: startPoint, locationId: 12345, sublocationId: 1);
416 LocationPoint endLocationPoint = LocationPoint(point: endPoint, locationId: 12345, sublocationId: 1);
420 RoutePath routePath =
_routeManager!.makeRoute(startLocationPoint, endLocationPoint);
423 print(
"Route with tag '$tag' has length: ${routePath.length} meters");
430 Future<void> demonstrateRoutePlanningSimulation() async {
431 print(
"=== Route Planning Simulation ===");
438 List<LocationPoint> targets = [
439 LocationPoint(point: Point(x: 50.0, y: 50.0), locationId: 12345, sublocationId: 1),
440 LocationPoint(point: Point(x: 100.0, y: 100.0), locationId: 12345, sublocationId: 1),
441 LocationPoint(point: Point(x: 150.0, y: 150.0), locationId: 12345, sublocationId: 1),
449 print(
"Set target 1: ${targets[0]}");
450 await Future.delayed(Duration(seconds: 1));
454 for (
int i = 1; i < targets.length; i++) {
456 print(
"Added target ${i + 1}: ${targets[i]}");
457 await Future.delayed(Duration(seconds: 1));
464 print(
"Cancelled current target");
467 await Future.delayed(Duration(seconds: 1));
472 print(
"Cleared all targets");
491 Future<void> runExample() async {
492 print(
"=== RouteManager Example ===");
498 await demonstrateRoutePlanningSimulation();
501 await Future.delayed(Duration(seconds: 3));
504 print(
"=== Example completed ===");