Integration and add heat map demo

- 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
This commit is contained in:
Carlos Gutierrez
2025-10-12 21:42:25 -04:00
commit fecd0ce968
65 changed files with 4199 additions and 0 deletions

View File

@@ -0,0 +1,60 @@
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();
}