9class NavigationManagerExample {
11 LocationManager? _locationManager;
12 NavigationManager? _navigationManager;
13 PositionListener? _positionListener;
15 NavigationManagerExample() {
17 _setupPositionListener();
23 void _initializeSdk() {
27 _sdk = NavigineSdk.getInstance();
32 _sdk?.setUserHash(
"USER-HASH-HERE");
37 _sdk?.setServer(
"https://custom.navigine.com");
42 _locationManager = _sdk?.getLocationManager();
47 _navigationManager = _sdk?.getNavigationManager(_locationManager!);
50 if (_locationManager !=
null && _navigationManager !=
null) {
51 print(
"LocationManager and NavigationManager successfully initialized");
54 print(
"Error initializing SDK: $e");
61 void _setupPositionListener() {
62 _positionListener = PositionListener(
64 onPositionUpdated: (Position position) {
65 print(
"Position updated successfully");
66 _demonstratePositionUsage(position);
70 onPositionError: (Error error) {
71 print(
"Position error: ${error.message}");
80 void demonstrateNavigationManagerMethods() {
81 if (_navigationManager ==
null) {
82 print(
"NavigationManager not initialized");
86 if (_positionListener ==
null)
return;
90 _navigationManager!.addPositionListener(_positionListener!);
95 _navigationManager!.startLogRecording();
100 Point point = Point(x: 10.0, y: 20.0);
101 LocationPoint locationPoint = LocationPoint(point: point, locationId: 12345, sublocationId: 1);
102 _navigationManager!.addCheckPoint(locationPoint);
107 GlobalPoint globalPoint = GlobalPoint(latitude: 55.7558, longitude: 37.6176);
108 _navigationManager!.addLocationMeasurement(globalPoint, 5.0,
"gps");
113 _navigationManager!.stopLogRecording();
120 void _demonstratePositionUsage(Position position) {
123 GlobalPoint? globalPoint = position.point;
124 if (globalPoint !=
null) {
125 _demonstrateGlobalPointUsage(globalPoint);
131 double accuracy = position.accuracy;
132 print(
"Position accuracy: $accuracy meters");
137 double? heading = position.heading;
138 if (heading !=
null) {
139 print(
"Heading: $heading radians");
145 double? headingAccuracy = position.headingAccuracy;
146 if (headingAccuracy !=
null) {
147 print(
"Heading accuracy: $headingAccuracy radians");
153 LocationPoint? locationPoint = position.locationPoint;
154 if (locationPoint !=
null) {
155 _demonstrateLocationPointUsage(locationPoint);
161 double? locationHeading = position.locationHeading;
162 if (locationHeading !=
null) {
163 print(
"Location heading: $locationHeading radians");
171 void _demonstrateGlobalPointUsage(GlobalPoint globalPoint) {
174 double latitude = globalPoint.latitude;
175 print(
"Latitude: $latitude");
180 double longitude = globalPoint.longitude;
181 print(
"Longitude: $longitude");
186 GlobalPoint newPoint = GlobalPoint(latitude: latitude, longitude: longitude);
187 print(
"Created new GlobalPoint: $newPoint");
194 void _demonstrateLocationPointUsage(LocationPoint locationPoint) {
197 Point? point = locationPoint.point;
199 _demonstratePointUsage(point);
205 int locationId = locationPoint.locationId;
206 print(
"Location ID: $locationId");
211 int sublocationId = locationPoint.sublocationId;
212 print(
"Sublocation ID: $sublocationId");
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");
226 void _demonstratePointUsage(Point point) {
230 print(
"Point X: $x");
236 print(
"Point Y: $y");
241 Point newPoint = Point(x: x, y: y);
242 print(
"Created new Point: $newPoint");
249 void demonstrateLocationManagerIntegration() {
250 if (_locationManager ==
null) {
251 print(
"LocationManager not initialized");
257 LocationListener locationListener = LocationListener(
259 onLocationLoaded: (Location? location) {
260 print(
"Location loaded for navigation");
261 if (location !=
null) {
264 _locationManager!.setLocationId(location.id);
270 onLocationUploaded: (
int locationId) {
271 print(
"Location uploaded: $locationId");
275 onLocationFailed: (
int locationId, Error error) {
276 print(
"Failed to load location $locationId: ${error.message}");
280 _locationManager!.addLocationListener(locationListener);
285 _locationManager!.setLocationId(12345);
290 int currentLocationId = _locationManager!.getLocationId();
291 print(
"Current location ID: $currentLocationId");
296 _locationManager!.setLocationUpdateInterval(300);
301 _locationManager!.commitChanges();
308 void demonstrateAdvancedNavigationFeatures() {
309 print(
"=== Advanced Navigation Features ===");
311 if (_navigationManager ==
null) {
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),
323 for (
int i = 0; i < checkPoints.length; i++) {
324 LocationPoint locationPoint = LocationPoint(point: checkPoints[i], locationId: 12345, sublocationId: 1);
327 _navigationManager!.addCheckPoint(locationPoint);
329 print(
"Added check point ${i + 1}: $locationPoint");
333 List<GlobalPoint> measurements = [
334 GlobalPoint(latitude: 55.7558, longitude: 37.6176),
335 GlobalPoint(latitude: 40.7128, longitude: -74.0060),
336 GlobalPoint(latitude: 51.5074, longitude: -0.1278),
339 List<String> providers = [
"gps",
"network",
"fused"];
341 for (
int i = 0; i < measurements.length; i++) {
344 _navigationManager!.addLocationMeasurement(measurements[i], 3.0 + i, providers[i % providers.length]);
346 print(
"Added measurement ${i + 1} with provider: ${providers[i % providers.length]}");
353 Future<void> demonstratePositionTrackingSimulation() async {
354 print(
"=== Position Tracking Simulation ===");
356 if (_navigationManager ==
null) {
362 _navigationManager!.startLogRecording();
366 for (
int i = 0; i < 5; i++) {
367 double lat = 55.7558 + (i * 0.001);
368 double lon = 37.6176 + (i * 0.001);
370 GlobalPoint globalPoint = GlobalPoint(latitude: lat, longitude: lon);
373 _navigationManager!.addLocationMeasurement(globalPoint, 2.0,
"simulated");
376 print(
"Simulated position ${i + 1}: $globalPoint");
378 await Future.delayed(Duration(seconds: 1));
383 _navigationManager!.stopLogRecording();
391 if (_navigationManager !=
null && _positionListener !=
null) {
394 _navigationManager!.removePositionListener(_positionListener!);
402 Future<void> runExample() async {
403 print(
"=== NavigationManager Example ===");
405 demonstrateNavigationManagerMethods();
406 demonstrateLocationManagerIntegration();
407 demonstrateAdvancedNavigationFeatures();
408 await demonstratePositionTrackingSimulation();
411 await Future.delayed(Duration(seconds: 3));
414 print(
"=== Example completed ===");