- Implemented OpenStreetMap using WebView with Leaflet.js - Added OpenStreetMapView component with interactive map functionality - Created heat map visualization with color-coded intensity - Added 30 dummy location points around San Francisco Bay Area - Implemented location tracking with real-time pin placement - Added comprehensive UI with two-row button layout - Features: Start/Stop tracking, Center map, Demo heat map, Clear demo, Reset map - Added location count display and confirmation dialogs - Updated project structure and documentation - All functionality tested and working on Android emulator
61 lines
1.7 KiB
C#
61 lines
1.7 KiB
C#
using LocationTrackerApp.Models;
|
|
|
|
namespace LocationTrackerApp.Services;
|
|
|
|
/// <summary>
|
|
/// Interface for location tracking service
|
|
/// </summary>
|
|
public interface ILocationService
|
|
{
|
|
/// <summary>
|
|
/// Event fired when a new location is received
|
|
/// </summary>
|
|
event EventHandler<LocationData>? LocationChanged;
|
|
|
|
/// <summary>
|
|
/// Event fired when location tracking status changes
|
|
/// </summary>
|
|
event EventHandler<bool>? TrackingStatusChanged;
|
|
|
|
/// <summary>
|
|
/// Gets the current location tracking status
|
|
/// </summary>
|
|
bool IsTracking { get; }
|
|
|
|
/// <summary>
|
|
/// Gets the current session ID
|
|
/// </summary>
|
|
string? CurrentSessionId { get; }
|
|
|
|
/// <summary>
|
|
/// Starts location tracking
|
|
/// </summary>
|
|
/// <param name="sessionId">Optional session ID for grouping location data</param>
|
|
/// <returns>Task representing the async operation</returns>
|
|
Task StartTrackingAsync(string? sessionId = null);
|
|
|
|
/// <summary>
|
|
/// Stops location tracking
|
|
/// </summary>
|
|
/// <returns>Task representing the async operation</returns>
|
|
Task StopTrackingAsync();
|
|
|
|
/// <summary>
|
|
/// Gets the current location
|
|
/// </summary>
|
|
/// <returns>Current location data or null if not available</returns>
|
|
Task<LocationData?> GetCurrentLocationAsync();
|
|
|
|
/// <summary>
|
|
/// Requests location permissions from the user
|
|
/// </summary>
|
|
/// <returns>True if permissions are granted, false otherwise</returns>
|
|
Task<bool> RequestLocationPermissionsAsync();
|
|
|
|
/// <summary>
|
|
/// Checks if location permissions are granted
|
|
/// </summary>
|
|
/// <returns>True if permissions are granted, false otherwise</returns>
|
|
Task<bool> HasLocationPermissionsAsync();
|
|
}
|