This directory contains comprehensive usage examples for the NavigationManager module across all supported platforms.
Overview
The NavigationManager module provides navigation and positioning functionality, including:
- User position tracking and calculation
- Location measurements and checkpoints
- Integration with LocationManager for location data
- Position listeners for real-time updates
- Log recording capabilities
Covered Classes and Methods
NavigationManager
addPositionListener(PositionListener)
- Add position listener for updates
removePositionListener(PositionListener)
- Remove position listener
startLogRecording()
- Start recording navigation logs
stopLogRecording()
- Stop recording navigation logs
addCheckPoint(LocationPoint)
- Add checkpoint for path tracking
addLocationMeasurement(GlobalPoint, accuracy, provider)
- Add location measurement
Position
getPoint()
- Get global WGS84 coordinates
getAccuracy()
- Get position accuracy in meters
getHeading()
- Get heading angle in radians
getHeadingAccuracy()
- Get heading accuracy in radians
getLocationPoint()
- Get location point in metrics coordinates
getLocationHeading()
- Get location heading relative to sublocation north
PositionListener
onPositionUpdated(Position)
- Called when new position is calculated
onPositionError(Error)
- Called when position calculation fails
GlobalPoint
getLatitude()
- Get latitude coordinate
getLongitude()
- Get longitude coordinate
- Constructor with latitude and longitude parameters
LocationPoint
getPoint()
- Get point coordinates within location
getLocationId()
- Get location identifier
getSublocationId()
- Get sublocation identifier
- Constructor with point, locationId, and sublocationId parameters
Point
getX()
- Get X coordinate
getY()
- Get Y coordinate
- Constructor with x and y parameters
LocationManager Integration
addLocationListener(LocationListener)
- Add location listener
setLocationId(int)
- Set location ID to load
getLocationId()
- Get current location ID
setLocationUpdateInterval(int)
- Set location update interval
commitChanges()
- Commit location changes
Platform-Specific Examples
Java
Kotlin
Objective-C
Swift
Dart/Flutter
Key Features Demonstrated
1. Basic Navigation Setup
- SDK initialization with custom server URL
- NavigationManager and LocationManager integration
- Position listener setup
2. Position Tracking
- Real-time position updates via PositionListener
- Position data extraction (coordinates, accuracy, heading)
- Error handling for position calculation failures
3. Location Measurements
- Adding GPS and network-based location measurements
- Multiple measurement providers (gps, network, fused, simulated)
- Accuracy and provider specification
4. Checkpoint System
- Adding checkpoints for path tracking
- LocationPoint creation and management
- Integration with location and sublocation IDs
5. Advanced Features
- Log recording start/stop functionality
- Multiple checkpoint management
- Simulated position tracking
- LocationManager integration for location loading
6. Data Structures
- GlobalPoint for WGS84 coordinates
- LocationPoint for location-specific coordinates
- Point for 2D coordinates
- Position for complete position information
Configuration
All examples use the following configuration:
Error Handling
Examples include comprehensive error handling for:
- SDK initialization failures
- Position calculation errors
- Location loading failures
- Network connectivity issues
Threading and Concurrency
- Java/Kotlin: Uses Thread.sleep() for timing
- Objective-C: Uses NSThread sleepForTimeInterval
- Swift: Uses Thread.sleep(forTimeInterval:)
- Dart: Uses Future.delayed() for async operations
Memory Management
- Java/Kotlin: Automatic garbage collection
- Objective-C: ARC (Automatic Reference Counting)
- Swift: ARC with strong/weak references
- Dart: Automatic memory management
Integration Notes
LocationManager Integration
All examples demonstrate integration with LocationManager for:
- Location loading and management
- Location update intervals
- Location listener callbacks
Position Listener Pattern
Examples show proper implementation of the observer pattern:
- Adding listeners for position updates
- Handling position data in callbacks
- Proper cleanup of listeners
Usage Instructions
- Setup: Replace
USER-HASH-HERE
with your actual user hash
- Location: Set appropriate location ID for your use case
- Server: Modify server URL if using different Navigine server
- Run: Execute the example for your target platform
- Monitor: Watch console output for position updates and navigation events
Dependencies
All examples require the Navigine SDK to be properly installed and configured for each platform:
- Java/Kotlin: Navigine SDK JAR files
- Objective-C/Swift: Navigine SDK framework
- Dart: Navigine SDK package
Troubleshooting
Common issues and solutions:
- SDK not initialized: Check user hash and server URL
- No position updates: Verify location ID and network connectivity
- Memory leaks: Ensure proper listener cleanup
- Compilation errors: Verify SDK installation and imports
Next Steps
After understanding these examples, you can:
- Implement custom position tracking logic
- Add route calculation features
- Integrate with map visualization
- Implement advanced navigation algorithms
- Add user interface components
Support
For additional help:
- Navigine SDK documentation
- Platform-specific development guides
- API reference documentation
- Community forums and support channels