From d67d78b385b1c5e62b12ddc8075cfa51e34b003a Mon Sep 17 00:00:00 2001 From: RemoMeijer Date: Wed, 6 Jan 2021 16:27:28 +0100 Subject: [PATCH] Added total distance in route detail --- app/src/main/assets/routes.json | 39 +++++++++---------- .../com/a1/nextlocation/data/Location.java | 17 +++----- .../java/com/a1/nextlocation/data/Route.java | 1 - .../fragments/RouteDetailFragment.java | 21 +++++++--- .../main/res/layout/fragment_route_detail.xml | 23 ++++++++--- app/src/main/res/values-nl/strings.xml | 1 + app/src/main/res/values/strings.xml | 1 + 7 files changed, 60 insertions(+), 43 deletions(-) diff --git a/app/src/main/assets/routes.json b/app/src/main/assets/routes.json index f56e103..641cdc9 100644 --- a/app/src/main/assets/routes.json +++ b/app/src/main/assets/routes.json @@ -2,6 +2,12 @@ { "name": "rondje stad", "locations": [ + { + "name":"Escaping Breda: Escape Room Games Boschstraat 114", + "coordinates":"51.59096518753322, 4.783727736123234", + "description":"4811GK Breda", + "imageUrl":"NULL" + }, { "name":"Prison Escape Kloosterlaan 168", "coordinates":"51.59058740778487, 4.784723144974098", @@ -14,13 +20,6 @@ "description":"4811HP Breda", "imageUrl":"NULL" }, - - { - "name":"Escaping Breda: Escape Room Games Boschstraat 114", - "coordinates":"51.59096518753322, 4.783727736123234", - "description":"4811GK Breda", - "imageUrl":"NULL" - }, { "name":"MEZZ Breda Keizerstraat 101", "coordinates":"51.5837840024532, 4.779037836841554", @@ -34,31 +33,31 @@ "imageUrl":"NULL" } ], - "totalDistance": 2.3434, + "totalDistance": 1073.0, "totalTime": 342342 }, { "name": "Obesi Route", "locations": [ - { - "name": "Kees Kroket Houtmarkt 9", - "coordinates": "51.58628401688983, 4.77579695141302", - "description": "lekkere patatjes" - }, { "name": "McDonald's Breda Karnemelkstraat", "coordinates": "51.586062613842245, 4.777606887874218", "description": "Wist je dat McDonald’s de grootste restaurantketen ter wereld is? Hierdoor hebben we een indrukwekkende geschiedenis. Maar wij kijken liever naar onze toekomst. Nieuwe restaurants, betere producten en duurzaam ondernemen. Wil je meer weten over McDonald’s? Lees verder op: https://www.mcdonalds.com/nl/nl-nl/over-ons.html!" }, + { + "name": "Kees Kroket Houtmarkt 9", + "coordinates": "51.58628401688983, 4.77579695141302", + "description": "lekkere patatjes" + }, { "name": "Wok To Go Halstraat 40", "coordinates": "51.586464146477574, 4.777606887874218", "description": "Bij Wok To Go houden we van snelle, gezonde en smaakvolle maaltijden. Sinds 2003 ontwikkelen onze chef-koks de lekkerste wokgerechten met verse ingrediënten. We doen dit vól overgave onder het motto “Making people happy through food”. Door het roerbakken – met een kleine hoeveelheid olie – op grote hitte, blijven de smaak en gezonde voedingsstoffen bewaard. We kiezen voor gezonde en unieke ingrediënten en bereiden uitgebalanceerde gerechten in een ‘Wokki box’ voor een gezonde levensstijl." }, { - "name": "De Boterhal Grote Markt 19", - "coordinates": "51.58798747205394, 4.776265846483903", - "description": "De Boterhal in Breda is een internationaal tapasrestaurant, speciaalbiercafé en wijnbar. Men kan gezellig bij ons lunchen, borrelen en dineren. Wij hebben een uitgebreide menukaart met een hele hoop bieren, wijnen, zowel per glas als per fles te verkrijgen, lunch en tapasgerechtjes. Naast het eten wat wij serveren hebben we ook een hoop bieren en wijnen. Naast de bieren op de kaart hebben wij wisselende bieren; vijf ketelbieren en vijf seizoensbieren." + "name": "The Tosti Club Breda A4, Vlaszak 2", + "coordinates": "51.588922458012384, 4.7804923888638", + "description": "Je kunt bij al onze vestigingen de hele dag terecht, want bij The Tosti Club eet je het klokje rond. Dus kom gezellig ontbijten, lunchen of voor een snelle hap aan het einde van de dag (wat dacht je van onze The Tosti Slice, onze variant op pizza!). Even geen zin in brood? Dan kunnen we je ook verblijden met onder andere acaï smoothiebowls, pancakes, granola’s / yoghurt of gewoon een lekkere warme drank met gebak. Mogen we je de Red Velvet fudge cake aanraden?" }, { "name": "Gauchos Grote Markt 33", @@ -66,12 +65,12 @@ "description": "De middeleeuwse Grote Markt is een historische plek in het Bourgondische hart van Breda, ooit in handen van de Spaanse bezetter. Gauchos Grill-Restaurant combineert daar Brabantse gemoedelijkheid met professionele gastvrijheid. In onze Latijnse keuken bereiden wij op uw aanwijzing een malse Argentijnse steak of een smakelijk visgerecht van de grill." }, { - "name": "The Tosti Club Breda A4, Vlaszak 2", - "coordinates": "51.588922458012384, 4.7804923888638", - "description": "Je kunt bij al onze vestigingen de hele dag terecht, want bij The Tosti Club eet je het klokje rond. Dus kom gezellig ontbijten, lunchen of voor een snelle hap aan het einde van de dag (wat dacht je van onze The Tosti Slice, onze variant op pizza!). Even geen zin in brood? Dan kunnen we je ook verblijden met onder andere acaï smoothiebowls, pancakes, granola’s / yoghurt of gewoon een lekkere warme drank met gebak. Mogen we je de Red Velvet fudge cake aanraden?" + "name": "De Boterhal Grote Markt 19", + "coordinates": "51.58798747205394, 4.776265846483903", + "description": "De Boterhal in Breda is een internationaal tapasrestaurant, speciaalbiercafé en wijnbar. Men kan gezellig bij ons lunchen, borrelen en dineren. Wij hebben een uitgebreide menukaart met een hele hoop bieren, wijnen, zowel per glas als per fles te verkrijgen, lunch en tapasgerechtjes. Naast het eten wat wij serveren hebben we ook een hoop bieren en wijnen. Naast de bieren op de kaart hebben wij wisselende bieren; vijf ketelbieren en vijf seizoensbieren." } ], - "totalDistance": 2.3434, + "totalDistance": 955.0, "totalTime": 342342 } ] \ No newline at end of file diff --git a/app/src/main/java/com/a1/nextlocation/data/Location.java b/app/src/main/java/com/a1/nextlocation/data/Location.java index 58ca18a..a236465 100644 --- a/app/src/main/java/com/a1/nextlocation/data/Location.java +++ b/app/src/main/java/com/a1/nextlocation/data/Location.java @@ -112,15 +112,6 @@ public class Location implements Parcelable { return long1 + "," + lat1; } - /** - * calculates the distance to the other location. - * @param other the other location - * @return the distance between the locations in meters - */ - public double getDistance(Location other) { - return getDistance(this.getLat(),this.getLong(),other.getLat(),other.getLong()); - } - /** * calculates the distance between two coordinates * @param lat1 the first latitude @@ -145,8 +136,12 @@ public class Location implements Parcelable { // Radius of earth in kilometers. Use 3956 // for miles - double r = 6371; - +// if(miles) { +// double r = 3956; +// } +// else { + double r = 6371; +// } // calculate the result double distance = c * r; diff --git a/app/src/main/java/com/a1/nextlocation/data/Route.java b/app/src/main/java/com/a1/nextlocation/data/Route.java index 1e10a1c..3138556 100644 --- a/app/src/main/java/com/a1/nextlocation/data/Route.java +++ b/app/src/main/java/com/a1/nextlocation/data/Route.java @@ -66,7 +66,6 @@ public class Route implements Parcelable { } public float getTotalDistance() { - //TODO calculate total distance according to all locations in list return totalDistance; } diff --git a/app/src/main/java/com/a1/nextlocation/fragments/RouteDetailFragment.java b/app/src/main/java/com/a1/nextlocation/fragments/RouteDetailFragment.java index 078f3c2..f0a7f5a 100644 --- a/app/src/main/java/com/a1/nextlocation/fragments/RouteDetailFragment.java +++ b/app/src/main/java/com/a1/nextlocation/fragments/RouteDetailFragment.java @@ -1,5 +1,6 @@ package com.a1.nextlocation.fragments; +import android.annotation.SuppressLint; import android.os.Bundle; import androidx.fragment.app.Fragment; @@ -27,6 +28,7 @@ public class RouteDetailFragment extends Fragment { private Route route; private TextView routeDetailText; private TextView routeName; + private TextView totalDistance; private ImageButton imageButton; @Override @@ -35,6 +37,7 @@ public class RouteDetailFragment extends Fragment { } + @SuppressLint("SetTextI18n") @Override public View onCreateView(LayoutInflater inflater, ViewGroup container, Bundle savedInstanceState) { View view = inflater.inflate(R.layout.fragment_route_detail, container, false); @@ -48,6 +51,10 @@ public class RouteDetailFragment extends Fragment { this.routeDetailText = view.findViewById(R.id.reoute_detail_tekst); this.routeDetailText.setText(this.route.getDescription()); + this.totalDistance = view.findViewById(R.id.total_distance); + String distance_tekst = getResources().getString(R.string.total_distance_route); + this.totalDistance.setText(distance_tekst + " " + calculateRoute(this.route.getLocations()) + "m"); + this.imageButton = view.findViewById(R.id.route_detail_back_button); this.imageButton.setOnClickListener(v -> { RouteFragment routeFragment = new RouteFragment(); @@ -57,8 +64,6 @@ public class RouteDetailFragment extends Fragment { Button startButton = view.findViewById(R.id.start_route_button); startButton.setOnClickListener(this::startRoute); - calculateRoute(this.route.getLocations()); - return view; } @@ -71,24 +76,28 @@ public class RouteDetailFragment extends Fragment { RouteHandler.INSTANCE.followRoute(route); Toast.makeText(requireContext(),"Route started!",Toast.LENGTH_SHORT).show(); ((FragmentActivity) view.getContext()).getSupportFragmentManager().beginTransaction().replace(R.id.fragment_layout, new HomeFragment()).addToBackStack(null).commit(); - } - //Calculates the route total distance + /** + * Calculates the distance between points + * @param route the route that is calculated + * @return the total distance of a route + */ public double calculateRoute(List route){ ArrayList routeArraylist = new ArrayList<>(route); double totalDistance = 0; Location firstLocation; Location secondLocation; System.out.println("Total locations: " + routeArraylist.size()); + //Cycles through the arraylist for(int i = 0; i < routeArraylist.size() - 1; i++) { firstLocation = routeArraylist.get(i); secondLocation = routeArraylist.get(i+1); System.out.println("locations distance calculated: " + (i+1) + " and " + (i+2) + "\nThe added distance is: " + Location.getDistance(firstLocation.getLat(), firstLocation.getLong(), secondLocation.getLat(), secondLocation.getLong())); + //Calculates the distance between points totalDistance += Location.getDistance(firstLocation.getLat(), firstLocation.getLong(), secondLocation.getLat(), secondLocation.getLong()); -// totalDistance += firstLocation.getDistance(secondLocation); - System.out.println("Distance nu: " + totalDistance); } + System.out.println("Total Distance: " + totalDistance); return totalDistance; } diff --git a/app/src/main/res/layout/fragment_route_detail.xml b/app/src/main/res/layout/fragment_route_detail.xml index 477aa5c..48b4dda 100644 --- a/app/src/main/res/layout/fragment_route_detail.xml +++ b/app/src/main/res/layout/fragment_route_detail.xml @@ -38,9 +38,7 @@ app:layout_constraintTop_toBottomOf="@id/route_detail_back_button" app:layout_constraintStart_toStartOf="parent" app:layout_constraintEnd_toEndOf="parent" - app:layout_constraintBottom_toTopOf="@id/reoute_detail_tekst" - - /> + app:layout_constraintBottom_toTopOf="@id/reoute_detail_tekst" /> + + + app:layout_constraintStart_toStartOf="parent" + app:layout_constraintEnd_toEndOf="parent" + tools:layout_editor_absoluteX="169dp" /> \ No newline at end of file diff --git a/app/src/main/res/values-nl/strings.xml b/app/src/main/res/values-nl/strings.xml index f8405ae..07a3df9 100644 --- a/app/src/main/res/values-nl/strings.xml +++ b/app/src/main/res/values-nl/strings.xml @@ -19,6 +19,7 @@ Weet je zeker dat je deze coupon wilt activeren? activeren Klaar + De totale afstand van de route is: annuleren Engels Nederlands diff --git a/app/src/main/res/values/strings.xml b/app/src/main/res/values/strings.xml index 8f787d1..56bf907 100644 --- a/app/src/main/res/values/strings.xml +++ b/app/src/main/res/values/strings.xml @@ -18,6 +18,7 @@ activate Done cancel + The total distance of the route is: Route stopped! Dutch English