9class RouteManagerExample {
16 RouteManagerExample() {
18 _setupRouteListener();
24 void _initializeSdk() {
38 _sdk?.setServer(
"https://custom.navigine.com");
43 _locationManager = _sdk?.getLocationManager();
48 _navigationManager = _sdk?.getNavigationManager(_locationManager!);
53 _routeManager = _sdk?.getRouteManager(_locationManager!, _navigationManager!);
56 if (_locationManager !=
null && _navigationManager !=
null && _routeManager !=
null) {
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);
81 void demonstrateRouteManagerMethods() {
82 if (_routeManager ==
null) {
83 print(
"RouteManager not initialized");
87 if (_routeListener ==
null)
return;
91 _routeManager!.addRouteListener(_routeListener!);
96 _routeManager!.setGraphTag(
"main");
101 String currentGraphTag = _routeManager!.getGraphTag();
102 print(
"Current graph tag: $currentGraphTag");
107 List<String> graphTags = _routeManager!.getGraphTags();
108 print(
"Available graph tags: $graphTags");
119 RoutePath routePath = _routeManager!.makeRoute(startLocationPoint, endLocationPoint);
120 print(
"Route created with length: ${routePath.length} meters");
125 List<LocationPoint> destinations = [
129 List<RoutePath> routePaths = _routeManager!.makeRoutes(startLocationPoint, destinations);
130 print(
"Created ${routePaths.length} routes");
135 _routeManager!.setTarget(endLocationPoint);
141 _routeManager!.addTarget(additionalTarget);
146 _routeManager!.cancelTarget();
151 _routeManager!.clearTargets();
158 void _demonstrateRoutePathUsage(List<RoutePath> paths) {
159 for (
int i = 0; i < paths.length; i++) {
161 print(
"=== Route Path ${i + 1} ===");
165 double length = path.
length;
166 print(
"Route length: $length meters");
171 List<LocationPoint> points = path.
points;
172 print(
"Route has ${points.length} points");
173 for (
int j = 0; j < points.length; j++) {
174 _demonstrateLocationPointUsage(points[j]);
180 List<RouteEvent> events = path.
events;
181 print(
"Route has ${events.length} events");
182 for (
int j = 0; j < events.length; j++) {
183 _demonstrateRouteEventUsage(events[j]);
190 if (headPath !=
null) {
191 print(
"Head path length: ${headPath.length} meters");
198 if (tailPath !=
null) {
199 print(
"Tail path length: ${tailPath.length} meters");
208 void _demonstrateRouteEventUsage(
RouteEvent event) {
212 print(
"Event type: $type");
217 int value =
event.value;
218 print(
"Event value: $value");
223 double distance =
event.distance;
224 print(
"Event distance: $distance meters");
230 print(
"Created new RouteEvent: $newEvent");
237 void demonstrateRouteEventTypes() {
240 print(
"Available route event types:");
241 print(
" - RouteEventType.TURN_LEFT: ${RouteEventType.TURN_LEFT}");
242 print(
" - RouteEventType.TURN_RIGHT: ${RouteEventType.TURN_RIGHT}");
243 print(
" - RouteEventType.TRANSITION: ${RouteEventType.TRANSITION}");
250 void _demonstrateLocationPointUsage(
LocationPoint locationPoint) {
255 _demonstratePointUsage(point);
262 print(
"Location ID: $locationId");
268 print(
"Sublocation ID: $sublocationId");
275 print(
"Created new LocationPoint: $newLocationPoint");
282 void _demonstratePointUsage(
Point point) {
286 print(
"Point X: $x");
292 print(
"Point Y: $y");
298 print(
"Created new Point: $newPoint");
305 void demonstrateAdvancedRoutingFeatures() {
306 print(
"=== Advanced Routing Features ===");
308 if (_routeManager ==
null) {
313 List<String> graphTags = [
"main",
"elevator",
"stairs"];
315 for (String tag in graphTags) {
318 _routeManager!.setGraphTag(tag);
321 print(
"Routing with graph tag: $tag");
331 RoutePath routePath = _routeManager!.makeRoute(startLocationPoint, endLocationPoint);
334 print(
"Route with tag '$tag' has length: ${routePath.length} meters");
341 Future<void> demonstrateRoutePlanningSimulation() async {
342 print(
"=== Route Planning Simulation ===");
344 if (_routeManager ==
null) {
349 List<LocationPoint> targets = [
357 _routeManager!.setTarget(targets[0]);
360 print(
"Set target 1: ${targets[0]}");
361 await Future.delayed(Duration(seconds: 1));
365 for (
int i = 1; i < targets.length; i++) {
366 _routeManager!.addTarget(targets[i]);
367 print(
"Added target ${i + 1}: ${targets[i]}");
368 await Future.delayed(Duration(seconds: 1));
374 _routeManager!.cancelTarget();
375 print(
"Cancelled current target");
378 await Future.delayed(Duration(seconds: 1));
382 _routeManager!.clearTargets();
383 print(
"Cleared all targets");
391 if (_routeManager !=
null && _routeListener !=
null) {
394 _routeManager!.removeRouteListener(_routeListener!);
402 Future<void> runExample() async {
403 print(
"=== RouteManager Example ===");
405 demonstrateRouteManagerMethods();
406 demonstrateRouteEventTypes();
407 demonstrateAdvancedRoutingFeatures();
408 await demonstrateRoutePlanningSimulation();
411 await Future.delayed(Duration(seconds: 3));
414 print(
"=== Example completed ===");