Aquila.GeoHandels.F10
1.0.1
dotnet add package Aquila.GeoHandels.F10 --version 1.0.1
NuGet\Install-Package Aquila.GeoHandels.F10 -Version 1.0.1
<PackageReference Include="Aquila.GeoHandels.F10" Version="1.0.1" />
<PackageVersion Include="Aquila.GeoHandels.F10" Version="1.0.1" />
<PackageReference Include="Aquila.GeoHandels.F10" />
paket add Aquila.GeoHandels.F10 --version 1.0.1
#r "nuget: Aquila.GeoHandels.F10, 1.0.1"
#:package Aquila.GeoHandels.F10@1.0.1
#addin nuget:?package=Aquila.GeoHandels.F10&version=1.0.1
#tool nuget:?package=Aquila.GeoHandels.F10&version=1.0.1
Aquila.GeoHandels — Location Intelligence Usage Guide
Author: Aswin Sadhasivam Company: Aquila Innovations License: MIT © Aquila Innovations
Overview
Aquila.GeoHandels provides location intelligence utilities for .NET MAUI applications, including:
- Fake GPS detection heuristics
- Location reliability scoring
- Drift filtering
- Circular and polygon geofencing
- Radius validation
This document explains how developers can integrate the Location Intelligence Engine to detect spoofed or unreliable GPS data.
Installation
Add the NuGet package:
dotnet add package Aquila.GeoHandels
Or via Visual Studio:
Manage NuGet Packages → Search → Aquila.GeoHandels
Basic Integration
1️⃣ Import Namespaces
using Aquila.GeoHandels.Models;
using Aquila.GeoHandels.Services;
using Aquila.GeoHandels.LocationIntelligence.Engine;
using Aquila.GeoHandels.LocationIntelligence.Models;
2️⃣ Initialize Services
readonly GeoLocationService geo = new();
readonly LocationIntelligenceEngine engine = new();
3️⃣ Get Device Location
var mauiLocation = await geo.GetRawLocationAsync();
if (mauiLocation == null)
return;
4️⃣ Build Intelligence Sample
var sample = new LocationSample
{
Latitude = mauiLocation.Latitude,
Longitude = mauiLocation.Longitude,
Accuracy = mauiLocation.Accuracy ?? 25,
Speed = mauiLocation.Speed ?? 0,
Timestamp = DateTime.UtcNow,
IsMockProvider = MockLocationHelper.IsMock(mauiLocation)
};
5️⃣ Process Reliability
var result = engine.Process(sample);
6️⃣ Interpret Results
if (result.IsReliable)
{
// Safe to use location
}
else
{
// Request new fix / warn user
}
Understanding Scores
Suspicion Score
Indicates likelihood of spoofing.
| Score | Meaning |
|---|---|
| 0 | Normal GPS |
| 1–40 | Minor anomalies |
| 41–79 | Suspicious |
| 80+ | Likely spoofed |
Confidence Score
Trust level of location data.
| Score | Meaning |
|---|---|
| 70–100 | Reliable |
| 40–69 | Moderate |
| 0–39 | Unreliable |
Expected Behaviour
| Scenario | Suspicion | Confidence |
|---|---|---|
| Real GPS | 0 | High |
| Fake GPS Enabled | ~80 | Low |
| Poor Signal | Low | Medium |
| Stationary Device | 0 | High |
Platform Notes
Android
- Uses provider mock detection
- Detects Fake GPS apps
Windows / Desktop
- Mock detection unavailable
- Heuristic scoring only
Recommended Usage Pattern
Acquire MAUI Location
↓
Build LocationSample
↓
Process via Engine
↓
Use result.IsReliable
Best Practices
- Always use MAUI
Locationfor detection - Do not bypass scoring
- Combine with geofence checks
- Avoid blocking users on first failure
- Log anomalies for analytics
Example UI Feedback
ResultLabel.Text =
$"Confidence: {result.ConfidenceScore}\n" +
$"Suspicion: {result.SuspicionScore}";
License
MIT License © Aquila Innovations
Aquila.GeoHandels
Enterprise Geolocation & Geofencing Toolkit for .NET MAUI (.NET 9)
Aquila.GeoHandels is a lightweight, cross-platform geolocation and geofencing library designed for production-grade .NET MAUI applications.
It abstracts platform GPS access and provides validated location intelligence including:
- Radius validation
- Circular geofencing
- Polygon campus boundaries
- Distance calculations
The library is built to be:
- Dependency-injection friendly
- Multi-platform compatible
- Testable
- NuGet-ready
- Enterprise extensible
📦 Target Platforms
- Android (Primary)
- Windows
- iOS (Extensible)
- MacCatalyst (Extensible)
Framework:
.NET 9
.NET MAUI
🚀 Features
Location Services
- Unified GPS abstraction
- Async location retrieval
- Accuracy-aware coordinates
- Timestamped readings
Distance & Validation
- Haversine-based distance calculation
- Radius validation
- Meter-level precision
Geofencing
Circular Fence
- Office radius validation
- Attendance tracking
- Check-in enforcement
Polygon Fence
- Campus boundaries
- Warehouse zones
- Multi-point areas
Architecture Benefits
- Interface driven
- Clean separation of concerns
- Replaceable platform providers
- Mockable for testing
🧩 Installation
Local Project Reference
Add reference:
Right Click Solution
→ Add → Project Reference
→ Aquila.GeoHandels
NuGet (Future)
Install-Package Aquila.GeoHandels
🧭 Quick Start
Using Services
using Aquila.GeoHandels.Models;
using Aquila.GeoHandels.Services;
Get Current Location
var geo = new GeoLocationService();
var location = await geo.GetCurrentAsync();
Console.WriteLine(location.Latitude);
Console.WriteLine(location.Longitude);
Radius Validation
var radius = new RadiusValidator();
var center = new GeoCoordinate(11.22711, 76.89497);
var staff = new GeoCoordinate(11.22720, 76.89510);
bool valid = radius.IsWithinRadius(
staff,
center,
200);
Circular Geofence
var circular = new CircularGeofenceService(radius);
bool inside = circular.IsInside(
staff,
center,
200);
Polygon Geofence
var polygon = new PolygonGeofenceService();
var boundary = new List<GeoCoordinate>
{
new(11.1,76.8),
new(11.2,76.9),
new(11.3,76.7)
};
bool inside = polygon.IsInside(staff, boundary);
🏗 Architecture Overview
Aquila.GeoHandels
│
├── Models
│ └── GeoCoordinate
│
├── Interfaces
│
├── Services
│
└── Platforms
└── Android Provider
This layered structure ensures:
- Platform independence
- Testability
- Maintainability
- Extensibility
🔍 Traditional Method vs Aquila.GeoHandels
Traditional Approach
Typical developer workflow:
- Directly call MAUI Geolocation API
- Write manual math
- Hardcode radius logic
- Duplicate code per project
- No abstraction
- No testing seams
Problems
- Tight platform coupling
- Repeated boilerplate
- Error-prone distance math
- Difficult maintenance
- No DI support
- Hard to scale
Aquila.GeoHandels Approach
Abstraction
Platform GPS hidden behind interfaces
Reusable Algorithms
Validated distance engines included
Modular
Drop-in services
Clean Architecture
- Separation of concerns
- Clear contracts
- Easy mocking
Production Ready
- Structured for NuGet
- Multi-target build
- Maintainable codebase
Comparison Table
| Capability | Traditional | Aquila.GeoHandels |
|---|---|---|
| GPS Access | Manual | Abstracted |
| Distance Math | Custom | Built-in |
| Radius Validation | Custom | Built-in |
| Circular Fence | Manual | Built-in |
| Polygon Fence | Rarely done | Built-in |
| DI Support | No | Yes |
| Testability | Poor | Strong |
| Reuse | Low | High |
| Scalability | Limited | Enterprise Ready |
🧪 Recommended Use Cases
- Attendance apps
- Field workforce validation
- Delivery zone checking
- Campus access control
- Retail geo targeting
- Warehouse automation
⚙ Best Practices
- Validate location accuracy before use
- Use ≥50m radius to avoid GPS drift
- Cache location reads
- Avoid rapid polling
- Log distance metrics
- Use polygon fences for large campuses
🛣 Roadmap
- Background tracking
- Enter/Exit events
- Anti-spoof detection
- Google Maps overlay tools
- Fence persistence engine
- Location smoothing filters
- Geo analytics module
👨💻 Author
Aquila Innovations
📜 License
MIT (Recommended)
| Product | Versions Compatible and additional computed target framework versions. |
|---|---|
| .NET | net10.0 is compatible. net10.0-android was computed. net10.0-browser was computed. net10.0-ios was computed. net10.0-maccatalyst was computed. net10.0-macos was computed. net10.0-tvos was computed. net10.0-windows was computed. |
-
net10.0
- Microsoft.Maui.Controls (>= 10.0.20)
NuGet packages
This package is not used by any NuGet packages.
GitHub repositories
This package is not used by any popular GitHub repositories.