PWA Fundvelo der Caritas.
Ви не можете вибрати більше 25 тем Теми мають розпочинатися з літери або цифри, можуть містити дефіси (-) і не повинні перевищувати 35 символів.

CaritasServiceFundVeloKeyDataPage.razor.cs 3.1KB

12345678910111213141516171819202122232425262728293031323334353637383940414243444546474849505152535455565758596061626364656667686970717273747576777879
  1. using System;
  2. using System.Threading.Tasks;
  3. using Microsoft.AspNetCore.Components;
  4. using CaritasPWA.Shared.Models.OSM;
  5. using Darnton.Blazor.Leaflet.LeafletMap;
  6. namespace CaritasPWA.Pages {
  7. public class CaritasServiceFundVeloKeyDataPageBase : ComponentBase, IAsyncDisposable {
  8. protected Map PositionMap;
  9. protected TileLayer OpenStreetMapsTileLayer;
  10. protected MapStateViewModel MapStateViewModel;
  11. protected MarkerViewModel MarkerViewModel;
  12. public CaritasServiceFundVeloKeyDataPageBase() : base() {
  13. var mapCentre = new LatLng(46.80121, 8.22669); // Centered on Swiss
  14. MapStateViewModel = new MapStateViewModel {
  15. MapCentreLatitude = mapCentre.Lat,
  16. MapCentreLongitude = mapCentre.Lng,
  17. Zoom = 6
  18. };
  19. PositionMap = new Map("bicycleLocationMap", new MapOptions {
  20. Center = mapCentre,
  21. Zoom = MapStateViewModel.Zoom
  22. });
  23. OpenStreetMapsTileLayer = new TileLayer(
  24. "https://{s}.tile.openstreetmap.org/{z}/{x}/{y}.png",
  25. new TileLayerOptions {
  26. Attribution = @"Map data &copy; <a href=""https://www.openstreetmap.org/"">OpenStreetMap</a> contributors, " +
  27. @"<a href=""https://creativecommons.org/licenses/by-sa/2.0/"">CC-BY-SA</a>"
  28. }
  29. );
  30. MarkerViewModel = new MarkerViewModel();
  31. }
  32. protected async void GetMapState() {
  33. var mapCentre = await PositionMap.GetCenter();
  34. MapStateViewModel.MapCentreLatitude = mapCentre.Lat;
  35. MapStateViewModel.MapCentreLongitude = mapCentre.Lng;
  36. MapStateViewModel.Zoom = await PositionMap.GetZoom();
  37. MapStateViewModel.MapContainerSize = await PositionMap.GetSize();
  38. MapStateViewModel.MapViewPixelBounds = await PositionMap.GetPixelBounds();
  39. MapStateViewModel.MapLayerPixelOrigin = await PositionMap.GetPixelOrigin();
  40. StateHasChanged();
  41. }
  42. protected async void SetMapState() {
  43. var mapCentre = new LatLng(MapStateViewModel.MapCentreLatitude, MapStateViewModel.MapCentreLongitude);
  44. await PositionMap.SetView(mapCentre, MapStateViewModel.Zoom);
  45. }
  46. protected async void AddMarkerAtMapCenter() {
  47. var mapCentre = await PositionMap.GetCenter();
  48. var marker = new Marker(mapCentre, new MarkerOptions {
  49. Keyboard = MarkerViewModel.Keyboard,
  50. Title = MarkerViewModel.Title,
  51. Alt = MarkerViewModel.Alt,
  52. ZIndexOffset = MarkerViewModel.ZIndexOffset,
  53. Opacity = MarkerViewModel.Opacity,
  54. RiseOnHover = MarkerViewModel.RiseOnHover,
  55. RiseOffset = MarkerViewModel.RiseOffset,
  56. });
  57. await marker.AddTo(PositionMap);
  58. }
  59. public async ValueTask DisposeAsync() {
  60. await OpenStreetMapsTileLayer.DisposeAsync();
  61. await PositionMap.DisposeAsync();
  62. }
  63. }
  64. }