Add Azure Maps road and satellite layers
This commit is contained in:
1 parent
3ea51a6842
commit
9733137fdd
6 files changed
+266
-4
No files matched your search
@@ -4,6 +4,7 @@
|
||||
@inject CadastralCatalogService CatalogService
|
||||
@inject OfficialCadastreService OfficialCadastreService
|
||||
@inject LocationSearchService LocationSearchService
|
||||
@inject AzureMapsService AzureMapsService
|
||||
@implements IAsyncDisposable
|
||||
|
||||
<PageTitle>LME Mappe Catastali</PageTitle>
|
||||
@@ -153,6 +154,8 @@
|
||||
<option value="topographic">Topografica - Esri World Topographic</option>
|
||||
<option value="terrain">Terreno - OpenTopoMap</option>
|
||||
<option value="carto">Strade chiare - CARTO Voyager</option>
|
||||
<option value="azure-road">Strade - Azure Maps</option>
|
||||
<option value="azure-satellite">Satellite - Azure Maps</option>
|
||||
<option value="google-satellite">Satellite - Google Maps</option>
|
||||
<option value="google-roadmap">Strade - Google Maps</option>
|
||||
</select>
|
||||
@@ -162,6 +165,15 @@
|
||||
<input type="password" @bind="GoogleMapsApiKey" placeholder="API key" autocomplete="off" />
|
||||
</label>
|
||||
<button class="secondary-command" @onclick="SaveGoogleMapsApiKey">Salva chiave Google</button>
|
||||
<label>
|
||||
Chiave sottoscrizione Azure Maps Gen2
|
||||
<input type="password" @bind="AzureMapsSubscriptionKey" placeholder="Subscription key" autocomplete="off" />
|
||||
</label>
|
||||
<button class="secondary-command" @onclick="SaveAzureMapsKey">Salva chiave Azure Maps</button>
|
||||
<div class="service-note">
|
||||
<strong>Quota gratuita Azure Maps Gen2</strong>
|
||||
<p>Include ogni mese 5.000 transazioni per le mappe stradali e 1.000 per le immagini satellitari. Ogni transazione comprende fino a 15 tessere.</p>
|
||||
</div>
|
||||
<label>
|
||||
Trasparenza catasto
|
||||
<input type="range" min="0" max="1" step="0.05" value="0.75" @onchange="ChangeCadastreOpacity" />
|
||||
@@ -215,6 +227,7 @@
|
||||
private string Status { get; set; } = "online";
|
||||
private string SelectedBaseLayer { get; set; } = "satellite";
|
||||
private string GoogleMapsApiKey { get; set; } = string.Empty;
|
||||
private string AzureMapsSubscriptionKey { get; set; } = string.Empty;
|
||||
private string SelectedRegionFile { get; set; } = string.Empty;
|
||||
private string SelectedMunicipalityCode { get; set; } = string.Empty;
|
||||
private string SelectedSheet { get; set; } = string.Empty;
|
||||
@@ -278,6 +291,15 @@
|
||||
GoogleMapsApiKey = string.Empty;
|
||||
}
|
||||
|
||||
try
|
||||
{
|
||||
AzureMapsSubscriptionKey = await SecureStorage.Default.GetAsync("azure_maps_subscription_key") ?? string.Empty;
|
||||
}
|
||||
catch
|
||||
{
|
||||
AzureMapsSubscriptionKey = string.Empty;
|
||||
}
|
||||
|
||||
try
|
||||
{
|
||||
Regions = await CatalogService.GetRegionsAsync();
|
||||
@@ -618,6 +640,18 @@
|
||||
await JS.InvokeVoidAsync("lmeMap.configureGoogleMaps", GoogleMapsApiKey.Trim());
|
||||
}
|
||||
|
||||
if (requestedLayer.StartsWith("azure-", StringComparison.Ordinal))
|
||||
{
|
||||
if (string.IsNullOrWhiteSpace(AzureMapsSubscriptionKey))
|
||||
{
|
||||
await JS.InvokeVoidAsync("lmeMap.showInfo", "Inserisci e salva la chiave della sottoscrizione Azure Maps.");
|
||||
return;
|
||||
}
|
||||
|
||||
await AzureMapsService.ValidateKeyAsync(AzureMapsSubscriptionKey);
|
||||
await JS.InvokeVoidAsync("lmeMap.configureAzureMaps", AzureMapsSubscriptionKey.Trim());
|
||||
}
|
||||
|
||||
await JS.InvokeVoidAsync("lmeMap.setBaseLayer", requestedLayer);
|
||||
SelectedBaseLayer = requestedLayer;
|
||||
}
|
||||
@@ -648,6 +682,34 @@
|
||||
await JS.InvokeVoidAsync("lmeMap.showInfo", $"Chiave Google non salvata: {error.Message}");
|
||||
}
|
||||
}
|
||||
|
||||
private async Task SaveAzureMapsKey()
|
||||
{
|
||||
try
|
||||
{
|
||||
if (string.IsNullOrWhiteSpace(AzureMapsSubscriptionKey))
|
||||
{
|
||||
SecureStorage.Default.Remove("azure_maps_subscription_key");
|
||||
await JS.InvokeVoidAsync("lmeMap.clearAzureMaps");
|
||||
if (SelectedBaseLayer.StartsWith("azure-", StringComparison.Ordinal))
|
||||
{
|
||||
SelectedBaseLayer = "satellite";
|
||||
}
|
||||
await JS.InvokeVoidAsync("lmeMap.showInfo", "Chiave Azure Maps rimossa.");
|
||||
return;
|
||||
}
|
||||
|
||||
AzureMapsSubscriptionKey = AzureMapsSubscriptionKey.Trim();
|
||||
await AzureMapsService.ValidateKeyAsync(AzureMapsSubscriptionKey);
|
||||
await SecureStorage.Default.SetAsync("azure_maps_subscription_key", AzureMapsSubscriptionKey);
|
||||
await JS.InvokeVoidAsync("lmeMap.configureAzureMaps", AzureMapsSubscriptionKey);
|
||||
await JS.InvokeVoidAsync("lmeMap.showInfo", "Chiave Azure Maps valida e salvata sul dispositivo.");
|
||||
}
|
||||
catch (Exception error)
|
||||
{
|
||||
await JS.InvokeVoidAsync("lmeMap.showInfo", $"Chiave Azure Maps non salvata: {error.GetBaseException().Message}");
|
||||
}
|
||||
}
|
||||
private Task ChangeCadastreOpacity(ChangeEventArgs args) => JS.InvokeVoidAsync("lmeMap.setCadastreOpacity", args.Value?.ToString()).AsTask();
|
||||
private Task ToggleCadastreLayer(string layer, ChangeEventArgs args) => JS.InvokeVoidAsync("lmeMap.toggleCadastreLayer", layer, (bool?)args.Value == true).AsTask();
|
||||
private Task ExportCadastralImage() => JS.InvokeVoidAsync("lmeMap.exportCadastreView").AsTask();
|
||||
|
||||
Reference in new issue
Block a user