BlazorGoogleMaps 4.15.0
dotnet add package BlazorGoogleMaps --version 4.15.0
NuGet\Install-Package BlazorGoogleMaps -Version 4.15.0
<PackageReference Include="BlazorGoogleMaps" Version="4.15.0" />
<PackageVersion Include="BlazorGoogleMaps" Version="4.15.0" />
<PackageReference Include="BlazorGoogleMaps" />
paket add BlazorGoogleMaps --version 4.15.0
#r "nuget: BlazorGoogleMaps, 4.15.0"
#:package BlazorGoogleMaps@4.15.0
#addin nuget:?package=BlazorGoogleMaps&version=4.15.0
#tool nuget:?package=BlazorGoogleMaps&version=4.15.0
BlazorGoogleMaps
Blazor interop for GoogleMap library
Usage
- Provide your Google API key to BlazorGoogleMaps with one of the following methods. (You can get a key here: https://developers.google.com/maps/documentation/javascript/get-api-key)
Use the bootstrap loader with a key service (recommended):
services.AddBlazorGoogleMaps("YOUR_KEY_GOES_HERE");
OR specify google api libraries and/or version:
services.AddBlazorGoogleMaps(new GoogleMapsComponents.Maps.MapApiLoadOptions("YOUR_KEY_GOES_HERE")
{
Version = "beta",
Libraries = "places,visualization,drawing,marker",
});
OR to do something more complex (e.g. looking up keys asynchronously), implement a Scoped key service and add it with something like:
services.AddScoped<IBlazorGoogleMapsKeyService, YourServiceImplementation>();
OR (legacy - not recommended) Add google map script HEAD tag to wwwroot/index.html in Client side or _Host.cshtml in Server Side.
<script type="text/javascript" src="https://maps.googleapis.com/maps/api/js?key=YOUR_KEY_GOES_HERE&v=3"></script>
- Add path to project javascript functions file in wwwroot/index.html for Blazor WASM, or in _Host.cshtml or _HostLayout.cshtml for Blazor Server.
<script src="_content/BlazorGoogleMaps/js/objectManager.js"></script>
If you want to use marker clustering add this script as well:
<script src="https://unpkg.com/@googlemaps/markerclusterer/dist/index.min.js"></script>
- Using the component is the same for both Blazor WASM and Blazor Server
@page "/map"
@using GoogleMapsComponents
@using GoogleMapsComponents.Maps
<h1>Google Map</h1>
<div style="height:@Height">
<GoogleMap @ref="@_map1" Id="map1" Options="@mapOptions" Height="100%" OnAfterInit="AfterMapRender"></GoogleMap>
</div>
@functions {
private GoogleMap _map1;
private MapOptions mapOptions;
protected override void OnInitialized()
{
mapOptions = new MapOptions()
{
Zoom = 13,
Center = new LatLngLiteral()
{
Lat = 13.505892,
Lng = 100.8162
},
MapTypeId = MapTypeId.Roadmap
};
}
private async Task AfterMapRender()
{
_bounds = await LatLngBounds.CreateAsync(_map1.JsRuntime);
}
}
OR Render markers with Blazor (currently only with v=beta version of google-maps, and specify a MapId)
@page "/map"
@using GoogleMapsComponents
@using GoogleMapsComponents.Maps
<h1>Google Map</h1>
<AdvancedGoogleMap @ref="@_map1" Id="map1" Options="@mapOptions">
@foreach (var markerRef in Markers)
{
<MarkerComponent
@key="markerRef.Id"
Lat="@markerRef.Lat"
Lng="@markerRef.Lng"
Clickable="@markerRef.Clickable"
Draggable="@markerRef.Draggable"
OnClick="@(() => markerRef.Active = !markerRef.Active)"
OnMove="pos => markerRef.UpdatePosition(pos)">
<p>I am a blazor component</p>
</MarkerComponent>
}
</AdvancedGoogleMap>
@code {
private List<MarkerData> Markers =
[
new MarkerData { Id = 1, Lat = 13.505892, Lng = 100.8162 },
];
private AdvancedGoogleMap? _map1;
private MapOptions mapOptions =new MapOptions()
{
Zoom = 13,
Center = new LatLngLiteral()
{
Lat = 13.505892,
Lng = 100.8162
},
MapId = "DEMO_MAP_ID", //required for blazor markers
MapTypeId = MapTypeId.Roadmap
};
public class MarkerData
{
public int Id { get; set; }
public double Lat { get; set; }
public double Lng { get; set; }
public bool Clickable { get; set; } = true;
public bool Draggable { get; set; }
public bool Active { get; set; }
public void UpdatePosition(LatLngLiteral position)
{
Lat = position.Lat;
Lng = position.Lng;
}
}
}
Samples
Please check server side samples https://github.com/rungwiroon/BlazorGoogleMaps/tree/master/ServerSideDemo which are most to date
ClientSide demos online https://rungwiroon.github.io/BlazorGoogleMaps/mapEvents
Breaking change from 4.0.0 Migrate to .NET 8 #286.
Breaking change from 3.0.0 Migrate from Newtonsoft.Json to System.Text.Json.
Breaking change from 2.0.0 LatLngLiteral constructor's parameters order changed #173
| Product | Versions Compatible and additional computed target framework versions. |
|---|---|
| .NET | 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 is compatible. 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 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.AspNetCore.Components (>= 10.0.2)
- Microsoft.AspNetCore.Components.Web (>= 10.0.2)
- Microsoft.JSInterop (>= 10.0.2)
- OneOf (>= 3.0.271)
-
net8.0
- Microsoft.AspNetCore.Components (>= 8.0.23)
- Microsoft.AspNetCore.Components.Web (>= 8.0.23)
- Microsoft.JSInterop (>= 8.0.23)
- OneOf (>= 3.0.271)
- System.Text.Json (>= 10.0.2)
-
net9.0
- Microsoft.AspNetCore.Components (>= 9.0.12)
- Microsoft.AspNetCore.Components.Web (>= 9.0.12)
- Microsoft.JSInterop (>= 9.0.12)
- OneOf (>= 3.0.271)
NuGet packages (4)
Showing the top 4 NuGet packages that depend on BlazorGoogleMaps:
| Package | Downloads |
|---|---|
|
templar-common-libary
Package Description |
|
|
Magiq.Blazor
Provides views and services to be used in Blazor Client and Server projects. |
|
|
AeroBlazor
A blazor library, extending MudBlazor |
|
|
Microfrontend.one
Package Description |
GitHub repositories
This package is not used by any popular GitHub repositories.
| Version | Downloads | Last Updated |
|---|---|---|
| 4.15.0 | 1,442 | 1/27/2026 |
| 4.14.1 | 4,748 | 12/22/2025 |
| 4.14.0 | 2,941 | 11/27/2025 |
| 4.13.8 | 2,761 | 11/18/2025 |
| 4.13.7 | 4,878 | 10/27/2025 |
| 4.13.6 | 17,752 | 8/5/2025 |
| 4.13.5 | 1,151 | 7/30/2025 |
| 4.13.4 | 2,410 | 7/27/2025 |
| 4.13.3 | 349 | 7/26/2025 |
| 4.13.2 | 1,441 | 7/15/2025 |
| 4.13.1 | 2,276 | 7/5/2025 |
| 4.13.0 | 4,737 | 6/5/2025 |
| 4.12.2 | 2,681 | 6/2/2025 |
| 4.12.1 | 457 | 6/1/2025 |
| 4.12.0 | 569 | 5/28/2025 |
| 4.11.3 | 265 | 5/28/2025 |
| 4.11.2 | 2,197 | 5/13/2025 |
| 4.11.1 | 17,340 | 4/20/2025 |
| 4.11.0 | 846 | 4/14/2025 |
| 4.10.1 | 2,218 | 4/1/2025 |