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
                    
This command is intended to be used within the Package Manager Console in Visual Studio, as it uses the NuGet module's version of Install-Package.
<PackageReference Include="Aquila.GeoHandels.F10" Version="1.0.1" />
                    
For projects that support PackageReference, copy this XML node into the project file to reference the package.
<PackageVersion Include="Aquila.GeoHandels.F10" Version="1.0.1" />
                    
Directory.Packages.props
<PackageReference Include="Aquila.GeoHandels.F10" />
                    
Project file
For projects that support Central Package Management (CPM), copy this XML node into the solution Directory.Packages.props file to version the package.
paket add Aquila.GeoHandels.F10 --version 1.0.1
                    
#r "nuget: Aquila.GeoHandels.F10, 1.0.1"
                    
#r directive can be used in F# Interactive and Polyglot Notebooks. Copy this into the interactive tool or source code of the script to reference the package.
#:package Aquila.GeoHandels.F10@1.0.1
                    
#:package directive can be used in C# file-based apps starting in .NET 10 preview 4. Copy this into a .cs file before any lines of code to reference the package.
#addin nuget:?package=Aquila.GeoHandels.F10&version=1.0.1
                    
Install as a Cake Addin
#tool nuget:?package=Aquila.GeoHandels.F10&version=1.0.1
                    
Install as a Cake Tool

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

Acquire MAUI Location
        ↓
Build LocationSample
        ↓
Process via Engine
        ↓
Use result.IsReliable

Best Practices

  • Always use MAUI Location for 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

  • 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 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. 
Compatible target framework(s)
Included target framework(s) (in package)
Learn more about Target Frameworks and .NET Standard.

NuGet packages

This package is not used by any NuGet packages.

GitHub repositories

This package is not used by any popular GitHub repositories.

Version Downloads Last Updated
1.0.1 110 2/27/2026
1.0.0 100 2/27/2026