@page "/" @inject IJSRuntime JS @inject PreciseLocationService LocationService @implements IAsyncDisposable LME Mappe Catastali
Pronto
@code { private string SearchText { get; set; } = ""; private string CadastralRegion { get; set; } = ""; private string CadastralMunicipality { get; set; } = ""; private string CadastralMunicipalityCode { get; set; } = ""; private string CadastralSheet { get; set; } = ""; private string CadastralParcel { get; set; } = ""; private string ProjectName { get; set; } = ""; private string Status { get; set; } = "online"; private readonly List CadastralLayers = [ new("CP.CadastralParcel", "Particelle", true), new("codice_plla", "Numeri particelle", true), new("CP.CadastralZoning", "Fogli", true), new("fabbricati", "Fabbricati", true), new("strade", "Strade", false), new("acque", "Acque", false) ]; protected override async Task OnAfterRenderAsync(bool firstRender) { if (firstRender) { await JS.InvokeVoidAsync("lmeMap.init"); } } private Task SearchLocation() => JS.InvokeVoidAsync("lmeMap.search", SearchText).AsTask(); private Task LocateParcel() { var label = $"{CadastralRegion} {CadastralMunicipality} foglio {CadastralSheet} particella {CadastralParcel}".Trim(); return JS.InvokeVoidAsync("lmeMap.locateParcelArea", CadastralRegion, CadastralMunicipality, CadastralMunicipalityCode, CadastralSheet, CadastralParcel, label).AsTask(); } private Task ExportCadastralImage() => JS.InvokeVoidAsync("lmeMap.exportCadastreView").AsTask(); private Task FitImportedLayers() => JS.InvokeVoidAsync("lmeMap.fitImported").AsTask(); private Task ClearImportedLayers() => JS.InvokeVoidAsync("lmeMap.clearImported").AsTask(); private Task AddProjectMarker() => JS.InvokeVoidAsync("lmeMap.addProjectMarker", ProjectName).AsTask(); private async Task StartGps() { await LocationService.StartTrackingAsync( async location => await InvokeAsync(() => JS.InvokeVoidAsync("lmeMap.setNativeGpsPosition", location)), async error => await InvokeAsync(() => JS.InvokeVoidAsync("lmeMap.setGpsError", error))); } private async Task StopGps() { LocationService.StopTracking(); await JS.InvokeVoidAsync("lmeMap.stopGps"); } private Task CenterOnGps() => JS.InvokeVoidAsync("lmeMap.centerOnGps").AsTask(); private Task ToggleTrail(ChangeEventArgs args) => JS.InvokeVoidAsync("lmeMap.toggleTrail", (bool?)args.Value == true).AsTask(); private Task EnableDrawTools() => JS.InvokeVoidAsync("lmeMap.enableDrawTools").AsTask(); private Task SaveWorkspace() => JS.InvokeVoidAsync("lmeMap.saveWorkspace").AsTask(); private Task LoadWorkspace() => JS.InvokeVoidAsync("lmeMap.loadWorkspace").AsTask(); private Task ChangeBaseLayer(ChangeEventArgs args) => JS.InvokeVoidAsync("lmeMap.setBaseLayer", args.Value?.ToString()).AsTask(); 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 sealed record CadastralLayer(string Key, string Name, bool Enabled); public async ValueTask DisposeAsync() { await LocationService.DisposeAsync(); } }