protected override async void OnAppearing() { base.OnAppearing(); Coördinaat coördinaat = (Coördinaat)BindingContext; Title = coördinaat.Nummer.ToString(); // Title is nummer attribuut coördinaat Oefeningen_Picker.ItemsSource = await App.Database.LijstOefeningen(); // itemsource == alle oefeningen die ooit aangemaakt zijn var BindingCoördinaat = (Coördinaat)BindingContext; if (BindingCoördinaat.IDOEfening != null) // voorkomt dat bij iedere coördinaat standaard de eerste oefening wordt toegevoegd { Oefeningen_Picker.SelectedIndex = Convert.ToInt32(BindingCoördinaat.IDOEfening) - 1; // ID's beginnen vanaf 1, maar de index telt vanaf 0 } else { Oefeningen_Picker.SelectedIndex = -1; // oftewel, niks staat geselecteerd in de picker } if (BindingCoördinaat.IDRoute == 1) //RCS route mag niet worden bewerkt { Delete.IsEnabled = false; Oefeningen_Picker.IsEnabled = false; Routeomschrijving.IsEnabled = false; Opslaan_Button.IsEnabled = false; Reset_Button.IsEnabled = false; } }
// dit event bevat alle handelingen die kunnen gebeuren als er op de map geklikt wordt private async void Map_Route_Toevoegen_MapClicked(object sender, MapClickedEventArgs e) { //longitude en latitude zijn vereist voor het maken van pins op de map double location1 = e.Position.Latitude; double location2 = e.Position.Longitude; int NummerCoördinaat = CoördinatenRoute.Count + 1; //maak nieuwe pin aan op aangeklikte plek op de map Pin pin = new Pin { Label = NummerCoördinaat.ToString(), Type = PinType.Place, Position = new Position(location1, location2) }; Map_Route_Toevoegen.Pins.Add(pin); PinsLijst.Add(pin); //maak object van class Coördinaat aan die bij de nieuwe route hoort coördinaat = new Coördinaat { Nummer = NummerCoördinaat, Locatie1 = location1, Locatie2 = location2, IDOEfening = null, IDRoute = await App.Database.KrijgRouteID() // hiermee krijg je het ID van de route die je nu aan het toevoegen bent }; //voeg coördinaat object toe aan de list, maakt het mogelijk om later polylines te maken CoördinatenRoute.Add(coördinaat); //zodra er 2 of meer objecten in de eerder genoemde list zijn, wordt er een polyline getrokken tussen de laatste 2 Coördinaten / pins op de map if (CoördinatenRoute.Count >= 2) { Polyline polyline = new Polyline { StrokeColor = Color.Blue, StrokeWidth = 10, Geopath = { new Position(CoördinatenRoute[CoördinatenRoute.Count - 2].Locatie1, CoördinatenRoute[CoördinatenRoute.Count - 2].Locatie2), // pakt longitude en latitude van voorlaatste item in de list new Position(CoördinatenRoute.Last().Locatie1, CoördinatenRoute.Last().Locatie2) // pakt longitude en latitude van laatste item in de list } }; //voegt de net gemaakte polyline toe aan de map Map_Route_Toevoegen.MapElements.Add(polyline); PolylinesLijst.Add(polyline); } Route_Punt_Verwijderen.IsEnabled = true; // zorgt dat de knop werkt zodra er weer pins en polylines bestaan //event dat gebeurd als je op een al bestaande pin klikt pin.MarkerClicked += (s, args) => { args.HideInfoWindow = true; // zorgt ervoor dat het popup-window met label en adres niet verschijnt }; }
private void Map_Route_Bewerken_MapClicked(object sender, MapClickedEventArgs e) { Route route = (Route)BindingContext; // vereist voor het krijgen van IDRoute //longitude en latitude zijn vereist voor het maken van pins op de map double location1 = e.Position.Latitude; double location2 = e.Position.Longitude; int NummerCoördinaat = CoördinatenRoute.Count + 1; if (NieuwPunt.Count == 1) //hier wordt ervoor gezord dat er niet meerdere nieuwe pins tegelijk kunnen worden neergezet { Map_Route_Bewerken.Pins.Remove(NieuwPunt.Last()); //pin op de map NieuwPunt.Remove(NieuwPunt.Last()); // pin in pinslijst Map_Route_Bewerken.MapElements.Remove(polyline); // polyline naar pin } Pin pin = new Pin //maak nieuwe pin aan op aangeklikte plek op de map { Label = NummerCoördinaat.ToString(), Type = PinType.Place, Position = new Position(location1, location2) }; pin.MarkerClicked += (s, args) => // verbergt de label die verschijnt als je op de pin klikt { args.HideInfoWindow = true; }; Map_Route_Bewerken.Pins.Add(pin); //pin toevoegen aan de map NieuwPunt.Add(pin); coördinaat = new Coördinaat { Nummer = NummerCoördinaat, Locatie1 = location1, Locatie2 = location2, IDOEfening = null, IDRoute = route.IDRoute }; polyline = new Polyline //maak nieuwe polyline tussen nieuwe pin en laatste pin in route { StrokeColor = Color.Red, StrokeWidth = 10, Geopath = { new Position(CoördinatenRoute.Last().Locatie1, CoördinatenRoute.Last().Locatie2), // pakt longitude en latitude van voorlaatste item in de list new Position(coördinaat.Locatie1, coördinaat.Locatie2) // pakt longitude en latitude van laatste item in de list } }; Map_Route_Bewerken.MapElements.Add(polyline); //polyline tekenen }
protected override async void OnAppearing() { base.OnAppearing(); Oefeningen_Picker.ItemsSource = await App.Database.LijstOefeningen(); // itemsource = alle oefeningen die ooit aangemaakt zijn Coördinaat coördinaat = (Coördinaat)BindingContext; Title = coördinaat.Nummer.ToString(); if (coördinaat.IDOEfening != null) // voorkomt dat bij iedere coördinaat standaard de eerste oefening wordt toegevoegd { Oefeningen_Picker.SelectedIndex = Convert.ToInt32(coördinaat.IDOEfening) - 1; // ID's beginnen vanaf 1, maar de index telt vanaf 0 } else { Oefeningen_Picker.SelectedIndex = -1; // oftewel, niks staat geselcteerd in de picker } }
// Update coördinaat op basis van ID public Task <int> UpdateCoördinaat(Coördinaat coördinaat) { return(sqlite_database.UpdateAsync(coördinaat)); }
// Voeg coördinaat toe public Task <int> ToevoegenCoördinaat(Coördinaat coördinaat) { return(sqlite_database.InsertAsync(coördinaat)); }
// Verwijder coördinaat op basis van ID public Task <int> VerwijderCoördinaat(Coördinaat coördinaat) { return(sqlite_database.DeleteAsync(coördinaat)); }