Loading...
Searching...
No Matches
navigation_manager_example.dart
Go to the documentation of this file.
1import 'dart:async';
2import 'dart:io';
3import 'package:navigine_sdk/navigine_sdk.dart';
4
9class NavigationManagerExample {
10 NavigineSdk? _sdk;
11 LocationManager? _locationManager;
12 NavigationManager? _navigationManager;
13 PositionListener? _positionListener;
14
15 NavigationManagerExample() {
16 _initializeSdk();
17 _setupPositionListener();
18 }
19
23 void _initializeSdk() {
24 try {
25 // [dart_NavigineSdk_getInstance]
26 // Get SDK instance
27 _sdk = NavigineSdk.getInstance();
28 // [dart_NavigineSdk_getInstance]
29
30 // [dart_NavigineSdk_setUserHash]
31 // Set user hash
32 _sdk?.setUserHash("USER-HASH-HERE");
33 // [dart_NavigineSdk_setUserHash]
34
35 // [dart_NavigineSdk_setServer]
36 // Set server URL (optional)
37 _sdk?.setServer("https://custom.navigine.com");
38 // [dart_NavigineSdk_setServer]
39
40 // [dart_NavigineSdk_getLocationManager]
41 // Get LocationManager for working with locations
42 _locationManager = _sdk?.getLocationManager();
43 // [dart_NavigineSdk_getLocationManager]
44
45 // [dart_NavigineSdk_getNavigationManager]
46 // Get NavigationManager for working with navigation
47 _navigationManager = _sdk?.getNavigationManager(_locationManager!);
48 // [dart_NavigineSdk_getNavigationManager]
49
50 if (_locationManager != null && _navigationManager != null) {
51 print("LocationManager and NavigationManager successfully initialized");
52 }
53 } catch (e) {
54 print("Error initializing SDK: $e");
55 }
56 }
57
61 void _setupPositionListener() {
62 _positionListener = PositionListener(
63 // [dart_PositionListener_onPositionUpdated]
64 onPositionUpdated: (Position position) {
65 print("Position updated successfully");
66 _demonstratePositionUsage(position);
67 },
68 // [dart_PositionListener_onPositionUpdated]
69 // [dart_PositionListener_onPositionError]
70 onPositionError: (Error error) {
71 print("Position error: ${error.message}");
72 },
73 // [dart_PositionListener_onPositionError]
74 );
75 }
76
80 void demonstrateNavigationManagerMethods() {
81 if (_navigationManager == null) {
82 print("NavigationManager not initialized");
83 return;
84 }
85
86 if (_positionListener == null) return;
87
88 // [dart_NavigationManager_addPositionListener]
89 // Add position listener
90 _navigationManager!.addPositionListener(_positionListener!);
91 // [dart_NavigationManager_addPositionListener]
92
93 // [dart_NavigationManager_startLogRecording]
94 // Start log recording
95 _navigationManager!.startLogRecording();
96 // [dart_NavigationManager_startLogRecording]
97
98 // [dart_NavigationManager_addCheckPoint]
99 // Add check point
100 Point point = Point(x: 10.0, y: 20.0);
101 LocationPoint locationPoint = LocationPoint(point: point, locationId: 12345, sublocationId: 1);
102 _navigationManager!.addCheckPoint(locationPoint);
103 // [dart_NavigationManager_addCheckPoint]
104
105 // [dart_NavigationManager_addLocationMeasurement]
106 // Add location measurement
107 GlobalPoint globalPoint = GlobalPoint(latitude: 55.7558, longitude: 37.6176); // Moscow coordinates
108 _navigationManager!.addLocationMeasurement(globalPoint, 5.0, "gps");
109 // [dart_NavigationManager_addLocationMeasurement]
110
111 // [dart_NavigationManager_stopLogRecording]
112 // Stop log recording
113 _navigationManager!.stopLogRecording();
114 // [dart_NavigationManager_stopLogRecording]
115 }
116
120 void _demonstratePositionUsage(Position position) {
121 // [dart_Position_getPoint]
122 // Get global point (WGS84 coordinates)
123 GlobalPoint? globalPoint = position.point;
124 if (globalPoint != null) {
125 _demonstrateGlobalPointUsage(globalPoint);
126 }
127 // [dart_Position_getPoint]
128
129 // [dart_Position_getAccuracy]
130 // Get position accuracy
131 double accuracy = position.accuracy;
132 print("Position accuracy: $accuracy meters");
133 // [dart_Position_getAccuracy]
134
135 // [dart_Position_getHeading]
136 // Get heading (angle of rotation about the -Z axis in radians)
137 double? heading = position.heading;
138 if (heading != null) {
139 print("Heading: $heading radians");
140 }
141 // [dart_Position_getHeading]
142
143 // [dart_Position_getHeadingAccuracy]
144 // Get heading accuracy
145 double? headingAccuracy = position.headingAccuracy;
146 if (headingAccuracy != null) {
147 print("Heading accuracy: $headingAccuracy radians");
148 }
149 // [dart_Position_getHeadingAccuracy]
150
151 // [dart_Position_getLocationPoint]
152 // Get location point (metrics coordinates)
153 LocationPoint? locationPoint = position.locationPoint;
154 if (locationPoint != null) {
155 _demonstrateLocationPointUsage(locationPoint);
156 }
157 // [dart_Position_getLocationPoint]
158
159 // [dart_Position_getLocationHeading]
160 // Get location heading (with respect to sublocation north)
161 double? locationHeading = position.locationHeading;
162 if (locationHeading != null) {
163 print("Location heading: $locationHeading radians");
164 }
165 // [dart_Position_getLocationHeading]
166 }
167
171 void _demonstrateGlobalPointUsage(GlobalPoint globalPoint) {
172 // [dart_GlobalPoint_getLatitude]
173 // Get latitude
174 double latitude = globalPoint.latitude;
175 print("Latitude: $latitude");
176 // [dart_GlobalPoint_getLatitude]
177
178 // [dart_GlobalPoint_getLongitude]
179 // Get longitude
180 double longitude = globalPoint.longitude;
181 print("Longitude: $longitude");
182 // [dart_GlobalPoint_getLongitude]
183
184 // [dart_GlobalPoint_constructor]
185 // Create new GlobalPoint
186 GlobalPoint newPoint = GlobalPoint(latitude: latitude, longitude: longitude);
187 print("Created new GlobalPoint: $newPoint");
188 // [dart_GlobalPoint_constructor]
189 }
190
194 void _demonstrateLocationPointUsage(LocationPoint locationPoint) {
195 // [dart_LocationPoint_getPoint]
196 // Get point coordinates
197 Point? point = locationPoint.point;
198 if (point != null) {
199 _demonstratePointUsage(point);
200 }
201 // [dart_LocationPoint_getPoint]
202
203 // [dart_LocationPoint_getLocationId]
204 // Get location ID
205 int locationId = locationPoint.locationId;
206 print("Location ID: $locationId");
207 // [dart_LocationPoint_getLocationId]
208
209 // [dart_LocationPoint_getSublocationId]
210 // Get sublocation ID
211 int sublocationId = locationPoint.sublocationId;
212 print("Sublocation ID: $sublocationId");
213 // [dart_LocationPoint_getSublocationId]
214
215 // [dart_LocationPoint_constructor]
216 // Create new LocationPoint
217 Point newPoint = Point(x: 15.0, y: 25.0);
218 LocationPoint newLocationPoint = LocationPoint(point: newPoint, locationId: locationId, sublocationId: sublocationId);
219 print("Created new LocationPoint: $newLocationPoint");
220 // [dart_LocationPoint_constructor]
221 }
222
226 void _demonstratePointUsage(Point point) {
227 // [dart_Point_getX]
228 // Get X coordinate
229 double x = point.x;
230 print("Point X: $x");
231 // [dart_Point_getX]
232
233 // [dart_Point_getY]
234 // Get Y coordinate
235 double y = point.y;
236 print("Point Y: $y");
237 // [dart_Point_getY]
238
239 // [dart_Point_constructor]
240 // Create new Point
241 Point newPoint = Point(x: x, y: y);
242 print("Created new Point: $newPoint");
243 // [dart_Point_constructor]
244 }
245
249 void demonstrateLocationManagerIntegration() {
250 if (_locationManager == null) {
251 print("LocationManager not initialized");
252 return;
253 }
254
255 // [dart_LocationManager_addLocationListener]
256 // Add location listener for navigation integration
257 LocationListener locationListener = LocationListener(
258 // [dart_LocationListener_onLocationLoaded]
259 onLocationLoaded: (Location? location) {
260 print("Location loaded for navigation");
261 if (location != null) {
262 // [dart_LocationManager_setLocationId]
263 // Set location ID for navigation
264 _locationManager!.setLocationId(location.id);
265 // [dart_LocationManager_setLocationId]
266 }
267 },
268 // [dart_LocationListener_onLocationLoaded]
269 // [dart_LocationListener_onLocationUploaded]
270 onLocationUploaded: (int locationId) {
271 print("Location uploaded: $locationId");
272 },
273 // [dart_LocationListener_onLocationUploaded]
274 // [dart_LocationListener_onLocationFailed]
275 onLocationFailed: (int locationId, Error error) {
276 print("Failed to load location $locationId: ${error.message}");
277 },
278 // [dart_LocationListener_onLocationFailed]
279 );
280 _locationManager!.addLocationListener(locationListener);
281 // [dart_LocationManager_addLocationListener]
282
283 // [dart_LocationManager_setLocationId]
284 // Set location ID to load
285 _locationManager!.setLocationId(12345);
286 // [dart_LocationManager_setLocationId]
287
288 // [dart_LocationManager_getLocationId]
289 // Get current location ID
290 int currentLocationId = _locationManager!.getLocationId();
291 print("Current location ID: $currentLocationId");
292 // [dart_LocationManager_getLocationId]
293
294 // [dart_LocationManager_setLocationUpdateInterval]
295 // Set location update interval
296 _locationManager!.setLocationUpdateInterval(300); // 5 minutes
297 // [dart_LocationManager_setLocationUpdateInterval]
298
299 // [dart_LocationManager_commitChanges]
300 // Commit changes
301 _locationManager!.commitChanges();
302 // [dart_LocationManager_commitChanges]
303 }
304
308 void demonstrateAdvancedNavigationFeatures() {
309 print("=== Advanced Navigation Features ===");
310
311 if (_navigationManager == null) {
312 return;
313 }
314
315 // Create multiple check points for path tracking
316 List<Point> checkPoints = [
317 Point(x: 0.0, y: 0.0),
318 Point(x: 10.0, y: 10.0),
319 Point(x: 20.0, y: 20.0),
320 Point(x: 30.0, y: 30.0),
321 ];
322
323 for (int i = 0; i < checkPoints.length; i++) {
324 LocationPoint locationPoint = LocationPoint(point: checkPoints[i], locationId: 12345, sublocationId: 1);
325 // [dart_NavigationManager_addCheckPoint]
326 // Add check point for path tracking
327 _navigationManager!.addCheckPoint(locationPoint);
328 // [dart_NavigationManager_addCheckPoint]
329 print("Added check point ${i + 1}: $locationPoint");
330 }
331
332 // Add location measurements with different providers
333 List<GlobalPoint> measurements = [
334 GlobalPoint(latitude: 55.7558, longitude: 37.6176), // Moscow
335 GlobalPoint(latitude: 40.7128, longitude: -74.0060), // New York
336 GlobalPoint(latitude: 51.5074, longitude: -0.1278), // London
337 ];
338
339 List<String> providers = ["gps", "network", "fused"];
340
341 for (int i = 0; i < measurements.length; i++) {
342 // [dart_NavigationManager_addLocationMeasurement]
343 // Add location measurement with different providers
344 _navigationManager!.addLocationMeasurement(measurements[i], 3.0 + i, providers[i % providers.length]);
345 // [dart_NavigationManager_addLocationMeasurement]
346 print("Added measurement ${i + 1} with provider: ${providers[i % providers.length]}");
347 }
348 }
349
353 Future<void> demonstratePositionTrackingSimulation() async {
354 print("=== Position Tracking Simulation ===");
355
356 if (_navigationManager == null) {
357 return;
358 }
359
360 // [dart_NavigationManager_startLogRecording]
361 // Start log recording for position tracking
362 _navigationManager!.startLogRecording();
363 // [dart_NavigationManager_startLogRecording]
364
365 // Simulate position updates
366 for (int i = 0; i < 5; i++) {
367 double lat = 55.7558 + (i * 0.001); // Move north
368 double lon = 37.6176 + (i * 0.001); // Move east
369
370 GlobalPoint globalPoint = GlobalPoint(latitude: lat, longitude: lon);
371 // [dart_NavigationManager_addLocationMeasurement]
372 // Add simulated location measurement
373 _navigationManager!.addLocationMeasurement(globalPoint, 2.0, "simulated");
374 // [dart_NavigationManager_addLocationMeasurement]
375
376 print("Simulated position ${i + 1}: $globalPoint");
377
378 await Future.delayed(Duration(seconds: 1)); // Wait 1 second between updates
379 }
380
381 // [dart_NavigationManager_stopLogRecording]
382 // Stop log recording
383 _navigationManager!.stopLogRecording();
384 // [dart_NavigationManager_stopLogRecording]
385 }
386
390 void cleanup() {
391 if (_navigationManager != null && _positionListener != null) {
392 // [dart_NavigationManager_removePositionListener]
393 // Remove position listener
394 _navigationManager!.removePositionListener(_positionListener!);
395 // [dart_NavigationManager_removePositionListener]
396 }
397 }
398
402 Future<void> runExample() async {
403 print("=== NavigationManager Example ===");
404
405 demonstrateNavigationManagerMethods();
406 demonstrateLocationManagerIntegration();
407 demonstrateAdvancedNavigationFeatures();
408 await demonstratePositionTrackingSimulation();
409
410 // Wait a bit for position updates
411 await Future.delayed(Duration(seconds: 3));
412
413 cleanup();
414 print("=== Example completed ===");
415 }
416}
417
421Future<void> main() async {
423 await example.runExample();
424}