GoogleMaps.LocationServices
2.1.0
dotnet add package GoogleMaps.LocationServices --version 2.1.0
NuGet\Install-Package GoogleMaps.LocationServices -Version 2.1.0
<PackageReference Include="GoogleMaps.LocationServices" Version="2.1.0" />
<PackageVersion Include="GoogleMaps.LocationServices" Version="2.1.0" />
<PackageReference Include="GoogleMaps.LocationServices" />
paket add GoogleMaps.LocationServices --version 2.1.0
#r "nuget: GoogleMaps.LocationServices, 2.1.0"
#:package GoogleMaps.LocationServices@2.1.0
#addin nuget:?package=GoogleMaps.LocationServices&version=2.1.0
#tool nuget:?package=GoogleMaps.LocationServices&version=2.1.0
GoogleMaps.LocationServices
A lightweight .NET library for Google Maps geolocation workflows:
- geocoding (
address -> lat/lng) - reverse geocoding (
lat/lng -> address) - simple directions lookups
Install
# Package Manager
# Recommended current version: 2.1.0
dotnet add package GoogleMaps.LocationServices --version 2.1.0
# or
PM> Install-Package GoogleMaps.LocationServices
Requirements
- A valid Google Maps API key
- Enable the Google APIs you intend to use (Geocoding API, Directions API if needed)
Supported targets
netstandard2.0net8.0
Quick examples
using GoogleMaps.LocationServices;
var client = new GoogleLocationService("YOUR_API_KEY");
var address = new AddressData
{
Address = "1600 Amphitheatre Pkwy",
City = "Mountain View",
State = "CA",
Zip = "94043",
Country = "USA"
};
// Forward geocode
var point = client.GetLatLongFromAddress(address);
System.Console.WriteLine(point == null
? "No match found"
: $"{address} => {point.Latitude}, {point.Longitude}");
// Reverse geocode
var reverse = client.GetAddressFromLatLang(37.422, -122.084);
System.Console.WriteLine(reverse);
// Directions (address to address)
var destination = new AddressData
{
Address = "407 N Maple Dr. #1",
City = "Beverly Hills",
State = "CA"
};
var directions = client.GetDirections(address, destination);
System.Console.WriteLine($"Directions status: {directions.StatusCode}");
System.Console.WriteLine($"Distance: {directions.Distance}, Duration: {directions.Duration}");
foreach (var step in directions.Steps)
{
System.Console.WriteLine($"- {step.Instruction} ({step.Distance})");
}
Async overloads
Use async methods for non-blocking calls (recommended in services and UI apps):
using var cts = new CancellationTokenSource(TimeSpan.FromSeconds(5));
var point = await client.GetLatLongFromAddressAsync("1600 Amphitheatre Parkway", cts.Token);
var region = await client.GetRegionFromLatLongAsync(37.422, -122.084, cts.Token);
var matches = await client.GetAddressesListFromAddressAsync(address);
var route = await client.GetDirectionsAsync(address, destination, cts.Token);
Reliability and resilience defaults
GoogleLocationService now includes request hardening for production workloads:
- configurable retry count (
MaxRetryAttempts) - exponential backoff with jitter (
RetryDelay) - per-attempt request timeout (
RequestTimeout) - cancellation support (
CancellationToken) on async APIs - resilient HTTP client handling for transient network/HTTP errors (
HttpRequestException,TimeoutException,TaskCanceledException)
var hardened = new GoogleLocationService("YOUR_API_KEY")
{
MaxRetryAttempts = 3,
RetryDelay = TimeSpan.FromMilliseconds(250),
RequestTimeout = TimeSpan.FromSeconds(8)
};
You can also inject a shared HttpClient when integrating into DI/container-controlled clients:
using var httpClient = new HttpClient { Timeout = Timeout.InfiniteTimeSpan };
var fromDi = new GoogleLocationService("YOUR_API_KEY", httpClient);
Error handling
OVER_QUERY_LIMITthrowsWebExceptionwith an actionable message.REQUEST_DENIEDthrowsWebExceptionwhen the required Google Maps APIs are not enabled.- transient failures honor retry configuration before surfacing an exception.
Testing
The repo includes a full unit test suite:
dotnet test --configuration Release
Current test target includes:
- geocode parsing
- reverse geocode parsing
- directions parsing and failure states
- async behavior with retry validation
Development
If you are contributing, open the solution and run:
dotnet restore
dotnet build
dotnet test
dotnet pack GoogleMaps.LocationServices/GoogleMaps.LocationServices.csproj --configuration Release
| Product | Versions Compatible and additional computed target framework versions. |
|---|---|
| .NET | net5.0 was computed. net5.0-windows was computed. net6.0 was computed. net6.0-android was computed. net6.0-ios was computed. net6.0-maccatalyst was computed. net6.0-macos was computed. net6.0-tvos was computed. net6.0-windows was computed. net7.0 was computed. net7.0-android was computed. net7.0-ios was computed. net7.0-maccatalyst was computed. net7.0-macos was computed. net7.0-tvos was computed. net7.0-windows was computed. net8.0 is compatible. net8.0-android was computed. net8.0-browser was computed. net8.0-ios was computed. net8.0-maccatalyst was computed. net8.0-macos was computed. net8.0-tvos was computed. net8.0-windows was computed. net9.0 was computed. net9.0-android was computed. net9.0-browser was computed. net9.0-ios was computed. net9.0-maccatalyst was computed. net9.0-macos was computed. net9.0-tvos was computed. net9.0-windows was computed. net10.0 was computed. 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. |
| .NET Core | netcoreapp2.0 was computed. netcoreapp2.1 was computed. netcoreapp2.2 was computed. netcoreapp3.0 was computed. netcoreapp3.1 was computed. |
| .NET Standard | netstandard2.0 is compatible. netstandard2.1 was computed. |
| .NET Framework | net461 was computed. net462 was computed. net463 was computed. net47 was computed. net471 was computed. net472 was computed. net48 was computed. net481 was computed. |
| MonoAndroid | monoandroid was computed. |
| MonoMac | monomac was computed. |
| MonoTouch | monotouch was computed. |
| Tizen | tizen40 was computed. tizen60 was computed. |
| Xamarin.iOS | xamarinios was computed. |
| Xamarin.Mac | xamarinmac was computed. |
| Xamarin.TVOS | xamarintvos was computed. |
| Xamarin.WatchOS | xamarinwatchos was computed. |
-
.NETStandard 2.0
- No dependencies.
-
net8.0
- No dependencies.
NuGet packages (4)
Showing the top 4 NuGet packages that depend on GoogleMaps.LocationServices:
| Package | Downloads |
|---|---|
|
TheFusionWorks.Platforms
These are base utility classes developed by The Fusion Works which other packages and applications are built off. |
|
|
Sonrai.ExtRS
Package Description |
|
|
Sonrai.ExtRSNET48
$ExtRS.NET48 is a .NET Framework 4.8 class library for extending the capabilities of Reporting Services. |
|
|
Vita4AI.Core
Official Vita4AI Core Package |
GitHub repositories (1)
Showing the top 1 popular GitHub repositories that depend on GoogleMaps.LocationServices:
| Repository | Stars |
|---|---|
|
CodeMazeBlog/CodeMazeGuides
The main repository for all the Code Maze guides
|
Hardened service with resilient retries, request timeout/cancellation support, async APIs, and stronger CI/test coverage for production reliability.