You are viewing an old version of this page. View the current version.

Compare with Current View Page History

« Previous Version 6 Next »

Voor het berekenen van de afstand tussen twee punten (voor het declareren van reiskosten) gebruiken wij de Google Distance Matrix API. Voor de API hebben wij een key om deze te gebruiken in de back-end. Voor de eerste 100.000 requests kost het 0.005USD per request, er is echter per maand een gratis krediet beschikbaar van 200USD.


Wij waren voor het project de opties gegeven gebruik te maken van de Google Matrix Distance API of een ANWB routeplanner API, JDI heeft voorheen altijd de routeplanner op de site van de ANWB gebruikt maar gaf de voorkeur uit naar de Google API. Over de ANWB routeplanner API zelf is niks te vinden, alleen APIs die claimen gelijke resultaten te hebben met de ANWB routeplanner. Met voorkeur naar de Google API vanuit JDI, hebben wij er voor gekozen gebruik te maken van deze API.


Bij het versturen van een request kunnen er verschillende parameters worden mee gegeven:

TypeBeschrijvingVerplicht
destinationhet eind puntJa
originhet begin puntJa
arrival_timede tijd waarop je aan zou komenNee
departure_timede tijd waarop je zou vertrekkenNee
avoid

resticties om te voorkomen zoals: 

toll wegen, snelweg, veerboot of binnen plekken

Nee
languagede taal waarin je het terug krijgtNee
mode

transport mode zoals:

rijden, lopen fietsen of het OV

Nee

regionregio codeNee
traffic_modelaanname bij het berekenen van de reistijdNee
transit_mode

specificatie van welk type OV gebruikt mag worden zoals:

bus of trein

Nee
transit_routing_preference

extra voorkeuren zoals:

zo min mogelijk lopen of overstappen

Nee
unitsin welke unit het wordt terug gegevenNee


Voor ons doeleinde gebruiken wij alleen de 'destination', 'origin' en 'units' om de afstand te berekenen in kilometers.

De functie die wij hiervoor zullen gebruiken ziet er uit als volgt:


String url = "https://maps.googleapis.com/maps/api/distancematrix/json?destinations=" + destination + "&origins=" + origin + "&units=metric&key=" + APIKEY;

String resultString = restTemplate.getForObject(url, String.class);


Uit deze functie komt een JSON object terug, een voorbeeld hiervan ziet er zo uit:


{
    "destination_addresses": [
        "Zoetendaal 31, 6662 XG Elst, Netherlands"
    ],
    "origin_addresses": [
        "Professor Molkenboerstraat 3, 6524 RN Nijmegen, Netherlands"
    ],
    "rows": [
        {
            "elements": [
                {
                    "distance": {
                        "text""13.5 km",
                        "value"13510
                    },
                    "duration": {
                        "text""20 mins",
                        "value"1181
                    },
                    "status""OK"
                }
            ]
        }
    ],
    "status""OK"
}


Hier wordt de afstand uitgehaald en vervolgens wordt deze samen met het begin en eindpunt in de database opgeslagen in de tabel 'ROUTE'.

Uiteindelijk zal dit gebruikt worden om de reiskosten te berekenen van een gebruiker.


Tot slot zijn wij gevraagd door JDI een overzicht te maken van de verschillen tussen de afstanden berekend door de ANWB routeplanner en de door ons gebruikte Google API, deze ziet er als volgt uit:

Locatie ALocatie BAfstand Google APIAfstand ANWB routeplanner
Gildekamp 3318, NijmegenBeekhuizensweg 12, Velp30508m30600m
Professor Molkenboerstraat 3, NijmegenBeekhuizensweg 12, Velp28422m28300m
Willem van Arenbergstraat 4, NijmegenBeekhuizensweg 12, Velp22413m22400m
Antoon van Hooffplein 1, ArnhemBeekhuizensweg 12, Velp7118m6900m
  • No labels