Η διεπαφή και οι λειτουργίες επικοινωνίας με το Google Maps βρίσκονται στην κλάση Routes η
οποία υλοποιείται στον Server. Η κλάση Routes εκτός των άλλων περιέχει μια λίστα από
διαδρομές (googleRoutes) και είναι υπεύθυνη για την ανάκτηση βασικής και εναλλακτικών
διαδρομών από το Google Maps
και την παράδοση αυτών στον server του συστήματος. Αναλυτικότερα κατά την δημιουργία ενός
αντικειμένου Routes
δίνονται το γεωγραφικό μήκος και πλάτος του σημείου εκκίνησης και του σημείου
τερματισμού μιας διαδρομής. Ο constructor καλεί την μέθοδο createFirstUrl(String sLat, String sLng, String dLat, String dLng, String type) η οποία δημιουργεί ένα url της μορφής:
όπου
τα startLatitude,
startlongitude,
destinationLatitude
και destinationlongitude είναι γεωγραφικά μήκη και πλάτη με την μορφή δεκαδικών
αριθμών. Στην συνέχεια, με τη χρήση HTTP Request, επιστρέφεται η απάντηση σε αρχείο kml, το οποίο δίνεται ως είσοδος στην
μέθοδο getRoute(String kml) όπου με τη χρήση Regular Expressions γίνεται parsing και αντλούνται τα Tokens τις διαδρομής. Η διαδρομή αποθηκεύεται στην λίστα googleRoutes.
Στη
συνέχεια δημιουργείται ένα νέο url της μορφής:
όπου
τα startLatitude,
startlongitude,
destinationLatitude
και destinationlongitude είναι γεωγραφικά μήκη και πλάτη με την μορφή δεκαδικών
αριθμών. Στην συνέχεια, με τη χρήση HTTP Request, επιστρέφεται η απάντηση η οποία δίνεται ως
είσοδος στην μέθοδο getAltPoints(String temp) όπου με τη χρήση Regular Expressions γίνεται parsing και αντλούνται τα Alternative Points τα οποία χρησιμοποιούνται για την δημιουργία ερωτημάτων για εναλλακτικές
διαδρομές.
Για κάθε Alternative Point δημιουργείται
ένα νέο url
της μορφής:
όπου
τα startLatitude,
startlongitude,
destinationLatitude,
destinationlongitude,
alternativeLatitude
και alternativelongitude είναι γεωγραφικά μήκη και πλάτη με την μορφή δεκαδικών αριθμών
και τα alternativeLatitude και alternativelongitude απεικονίζουν το εναλλακτικό σημείο
απ’ το οποίο πρέπει να περνάει η διαδρομή που θα επιστραφεί. Για κάθε ένα από
αυτά τα urls
επιστρέφεται ένα αρχείο απάντησης τύπου kml για το οποίο καλείται η μέθοδος
getRoute(String kml) όπως προηγουμένως, και αποθηκεύεται η νέα διαδρομή στην
λίστα googleRoutes. Τέλος, να σημειωθεί πως για κάθε διαδρομή καλούνται οι μέθοδοι
getDistance(String temp), getTime(String temp) και getDirections(String temp)
οι οποίες μέσω parsing επιστρέφουν το μήκος, τον χρόνο της διαδρομής και τις
οδηγίες πλοήγησης αντίστοιχα.
Δεν υπάρχουν σχόλια:
Δημοσίευση σχολίου