Η τεχνολογία πίσω από το Soundscape

Ο σκοπός αυτής της σελίδας είναι να δώσει μια γενική κατανόηση του πώς λειτουργεί η εφαρμογή Soundscape στο παρασκήνιο. Δεν χρειάζεται να το διαβάσετε αυτό για να χρησιμοποιήσετε την εφαρμογή, αλλά υπάρχουν μερικοί λόγοι για τους οποίους γράφτηκε:

  1. Για να βοηθήσει όποιον ενδιαφερόμενο νεοεισερχόμενο στην εφαρμογή να κατανοήσει πού βρίσκονται οι περιορισμοί της
  2. Για να δώσει στους χρήστες μια ιδέα για το τι άλλο θα μπορούσε να είναι εφικτό με νέες λειτουργίες
  3. Για να δώσει στους προγραμματιστές μια επισκόπηση της λειτουργίας της εφαρμογής

Υπάρχουν δύο κομμάτια τεχνολογίας που καθιστούν την εφαρμογή δυνατή, το GPS και τα δεδομένα του OpenStreetMap. Το GPS μάς δίνει μια καλή ιδέα του πού βρίσκεται το τηλέφωνο και πού έχει βρεθεί. Τα δεδομένα του OpenStreetMap μπορούν στη συνέχεια να χρησιμοποιηθούν για να βρούμε τι υπάρχει κοντά και μπορούμε να το χρησιμοποιήσουμε για να το περιγράψουμε στον χρήστη.

Ηχητικά σήματα

Από τις περισσότερες απόψεις, αυτά είναι τα απλούστερα πράγματα για υλοποίηση από τεχνολογική σκοπιά. Υποθέτοντας ότι έχουμε την τοποθεσία του τηλεφώνου και μια κατεύθυνση για το τηλέφωνο, μπορούμε στη συνέχεια να αλλάξουμε τον ήχο του ηχητικού σήματος ώστε να ακούγεται σαν να προέρχεται από αυτή την κατεύθυνση. Χρησιμοποιούμε μια βιβλιοθήκη από το Steam Audio για να εκτελέσουμε την τοποθέτηση του ήχου, η οποία χρησιμοποιεί συναρτήσεις μεταφοράς σχετιζόμενες με το κεφάλι (head related transfer functions) για να δώσει την καλύτερη δυνατή τοποθέτηση ήχου. Το μόνο άλλο πράγμα που κάνουμε είναι να αλλάζουμε τον ήχο του ηχητικού σήματος ώστε να αναπαράγεται διαφορετικός ήχος ανάλογα με τη γωνία ανάμεσα στην κατεύθυνση του χρήστη και την τοποθεσία του ηχητικού σήματος. Οι γωνίες ποικίλλουν ανάλογα με το επιλεγμένο ηχητικό σήμα (Χτύπημα με το δάκτυλο, Φωτοβολίδα, Καμπανάκι κ.λπ.) και ορισμένα έχουν μεγαλύτερο αριθμό ήχων από άλλα. Και αυτά είναι τα ηχητικά σήματα στο απλούστερο επίπεδο.

Η μόνη επιπλέον πολυπλοκότητα είναι η υπόθεση για την τοποθεσία του τηλεφώνου και την κατεύθυνση προς την οποία είναι στραμμένος ο χρήστης. Ας τα δούμε με τη σειρά.

Τοποθεσία

Η τοποθεσία που επιστρέφεται από το GPS μπορεί να έχει αρκετά μεγάλο σφάλμα, και αυτό εξαρτάται από το πόσο μέρος του ουρανού είναι ορατό στο GPS του τηλεφώνου, και από το πόσα δέντρα και ψηλά κτίρια αντανακλούν το σήμα GPS στην πορεία του προς το τηλέφωνο.

Η προσέγγιση που έχουμε ακολουθήσει για το φιλτράρισμα της τοποθεσίας είναι να χρησιμοποιήσουμε αυτό που είναι γνωστό ως αντιστοίχιση χάρτη (map matching). Αυτό υποθέτει ότι ο χρήστης είναι πιθανότερο να ταξιδεύει κατά μήκος ενός χαρτογραφημένου μονοπατιού ή δρόμου - χρησιμοποιούμε τον όρο ‘Way’ για να καλύψουμε όλους τους δρόμους, τα μονοπάτια και τις διαδρομές. Η αντιστοίχιση χάρτη εξετάζει πού έχει βρεθεί ο χρήστης και, χρησιμοποιώντας την κατεύθυνση κίνησης μαζί με τα τοπικά δεδομένα χαρτογράφησης, επιλέγει την πιθανότερη τοποθεσία πάνω σε ένα Way. Αυτή η προσέγγιση δεν λαμβάνει υπόψη μόνο τα σφάλματα από το GPS, αλλά και τα σφάλματα στα δεδομένα του χάρτη. Δεν είναι όλα τα Ways χαρτογραφημένα με ακρίβεια και έτσι έχουν και αυτά σφάλματα. Για να καθορίσει ποιο είναι το πιθανότερο Way στο οποίο βρίσκεται ο χρήστης, ο αλγόριθμος εξετάζει:

  • Πόσο κοντά είναι ένα Way στην τοποθεσία GPS και στις προηγούμενες τοποθεσίες GPS
  • Την κατεύθυνση κίνησης - κινείται προς την ίδια κατεύθυνση με το Way
  • Το αν είναι δυνατό να φτάσει κανείς από την τελευταία αντιστοιχισμένη τοποθεσία στη νέα τοποθεσία μέσω του δικτύου των Ways. Αυτό απαιτείται για να αποκλειστεί η εναλλαγή μεταξύ Ways που δεν είναι στην πραγματικότητα συνδεδεμένα, π.χ. το ένα περνά πάνω από το άλλο μέσω γέφυρας ή κάτω από αυτό μέσω σήραγγας. Η αντιστοίχιση χάρτη μπορεί να αποφασίσει ότι δεν υπάρχουν κοντινά Ways, ή ότι δεν είναι σίγουρη για ποιο βρίσκεται ο χρήστης, και σε αυτή την περίπτωση απλώς περιμένει την επόμενη τοποθεσία GPS και προσπαθεί ξανά μέχρι να είναι σίγουρη.

Κατεύθυνση

Υπάρχουν αρκετές κατευθύνσεις που παρακολουθούμε στο λογισμικό:

  1. Η κατεύθυνση προς την οποία είναι στραμμένο το τηλέφωνο. Τη χρησιμοποιούμε όταν το τηλέφωνο είναι ξεκλείδωτο και η εφαρμογή είναι σε χρήση, αλλά και όταν το τηλέφωνο είναι κλειδωμένο, εφόσον κρατιέται επίπεδο με την οθόνη στραμμένη προς τον ουρανό. Είναι χρήσιμο να το έχετε αυτό υπόψη όταν βάζετε το τηλέφωνό σας στην τσάντα σας. Εάν τοποθετηθεί επίπεδο στον πάτο μιας τσάντας που κρατιέται όρθια, η τυχαία κατεύθυνση προς την οποία είναι στραμμένη η τσάντα σας θα χρησιμοποιηθεί από την εφαρμογή.
  2. Η κατεύθυνση προς την οποία ταξιδεύει το τηλέφωνο.
  3. Η κατεύθυνση από ακουστικά με παρακολούθηση κεφαλιού (head tracking). Δεν τη χρησιμοποιούμε επί του παρόντος, αν και η εφαρμογή iOS την υποστήριζε. Έχουμε την τεχνολογία διαθέσιμη για να την προσθέσουμε στο μέλλον.

Όταν το τηλέφωνο είναι κλειδωμένο και μέσα σε τσάντα, τότε η εφαρμογή θα χρησιμοποιήσει την κατεύθυνση ταξιδιού. Ωστόσο, εάν ο χρήστης δεν κινείται, τότε δεν υπάρχει διαθέσιμη κατεύθυνση. Όταν συμβαίνει αυτό, τα ηχητικά σήματα γίνονται πιο σιγανά για να υποδείξουν ότι δεν είναι δυνατό να γνωρίζουμε την τρέχουσα κατεύθυνση του ηχητικού σήματος - ο χρήστης θα μπορούσε να γυρίζει χωρίς να αλλάζει τοποθεσία.

Για ορισμένες χρήσεις της κατεύθυνσης στην εφαρμογή, η κατεύθυνση ‘προσαρμόζεται’ (snapped) στην κατεύθυνση του αντιστοιχισμένου Way, οπότε αν ο χρήστης περπατάει περίπου προς την κατεύθυνση του Way, τότε η πραγματική κατεύθυνση του Way θεωρείται σωστή και χρησιμοποιείται σε αυτούς τους υπολογισμούς.

Συμπέρασμα

Αν και εκ πρώτης όψεως τα ηχητικά σήματα είναι απλά, η χρήση της αντιστοίχισης χάρτη για την προσπάθεια εξάλειψης των σφαλμάτων τοποθεσίας και κατεύθυνσης εισάγει αρκετή πολυπλοκότητα.

Δεδομένα χάρτη

Τα δεδομένα χάρτη που χρησιμοποιεί η εφαρμογή προέρχονται σχεδόν όλα από το έργο OpenStreetMap. Διατηρούμε έναν διακομιστή που περιέχει έναν χάρτη ολόκληρου του κόσμου σε πολλαπλά επίπεδα ζουμ. Κάθε επίπεδο ζουμ χωρίζεται σε πλακίδια (tiles). Το επίπεδο ζουμ 0 περιέχει 1 πλακίδιο, το επίπεδο 1 περιέχει 4 πλακίδια, το επίπεδο 2 περιέχει 16 πλακίδια και ούτω καθεξής μέχρι το επίπεδο 14 το οποίο περιέχει περίπου 268 εκατομμύρια πλακίδια για να καλύψει τον πλανήτη. Κάθε πλακίδιο περιέχει πολλαπλά στρώματα (layers) και κάθε στρώμα έχει σημεία, γραμμές και πολύγωνα που μπορούν να σχεδιαστούν για να φτιάξουν έναν γραφικό χάρτη. Αυτός ο γραφικός χάρτης είναι αυτό που εμφανίζεται στον χρήστη στο γραφικό περιβάλλον της εφαρμογής. Κάθε σημείο, γραμμή και πολύγωνο έχει μεταδεδομένα που περιγράφουν τι είναι. Αυτό προέρχεται κυρίως απευθείας από τα δεδομένα του OpenStreetMap, οπότε μια γραμμή μπορεί να είναι ένα footway που είναι ένα sidewalk ή ένα road που είναι ένα minor

Τα δεδομένα μετατρέπονται στον γραφικό χάρτη μέσω ενός ‘στυλ’ (style) που έχει κανόνες για το πώς να σχεδιάζονται τα διαφορετικά σημεία, γραμμές και πολύγωνα σε κάθε στρώμα, π.χ. πώς να σχεδιαστεί ένα μονοπάτι, πώς να σχεδιαστεί ένα δάσος, πώς να σχεδιαστεί μια στάση λεωφορείου. Οι κανόνες μπορούν να ποικίλλουν ανά επίπεδο ζουμ, γι’ αυτό καθώς κάνετε ζουμ, όλο και περισσότερα σημεία και γραμμές γίνονται ορατά τα οποία δεν είναι ορατά όταν κάνετε σμίκρυνση, π.χ. στάσεις λεωφορείων και μονοπάτια.

Αλλάζοντας το στυλ μπορούμε να αλλάξουμε το πώς φαίνεται ο χάρτης του γραφικού περιβάλλοντος, από όπου προέρχεται ο ‘προσβάσιμος χάρτης’ που δοκιμάζουμε. Στόχος του είναι να έχει μεγαλύτερη αντίθεση και πιο έντονες γραμμές και κείμενο. Το στυλ είναι ενσωματωμένο στην εφαρμογή, οπότε δεν χρειάζεται να αλλάξουμε τον χάρτη στον διακομιστή για να αλλάξουμε το πώς φαίνεται.

Αλλά πώς χρησιμοποιούμε τα δεδομένα χάρτη για ήχο;

Χρήση των δεδομένων χάρτη για ήχο

Επί του παρόντος χρησιμοποιούμε ένα σχετικά μικρό μέρος των δεδομένων χαρτογράφησης για να δημιουργήσουμε το ηχητικό περιβάλλον χρήστη. Σχεδόν όλο το ηχητικό περιβάλλον χρήστη χρησιμοποιεί μόνο τα πλακίδια στο μέγιστο επίπεδο ζουμ. Η εφαρμογή συρράπτει ένα πλέγμα 2 επί 2 πλακιδίων γύρω από το πού βρίσκεται ο χρήστης και στη συνέχεια εξετάζει μόνο μερικά από τα στρώματα:

  • transportation - για όλους τους τύπους Ways, συμπεριλαμβανομένων δρόμων, μονοπατιών, σιδηροδρόμων και τραμ.
  • poi - σημεία ενδιαφέροντος, π.χ. καταστήματα, αθλητικά κέντρα, παγκάκια, ταχυδρομικά κουτιά, στάσεις λεωφορείων κ.λπ.
  • building - αυτό είναι για poi που χαρτογραφούνται ως κάτι περισσότερο από ένα απλό σημείο, π.χ. μεγάλα σούπερ μάρκετ ή δημαρχεία.

Συνδέει γραμμές και πολύγωνα σε όλα τα όρια των πλακιδίων και μετατρέπει όλα τα Ways σε συνδεδεμένα τμήματα Way και διασταυρώσεις. Αυτό είναι σημαντικό επειδή μας επιτρέπει να αναζητούμε κατά μήκος ενός Way για να ανακαλύψουμε πού μπορούμε να φτάσουμε.

Όλα τα αναλυμένα δεδομένα τοποθετούνται επίσης σε μια μορφή εύκολη προς αναζήτηση, ώστε η εφαρμογή να μπορεί εύκολα να βρίσκει ποια χαρακτηριστικά του χάρτη είναι κοντά. Σε αυτό το σημείο τα δεδομένα ταξινομούνται σε κατηγορίες. Οι τρέχουσες κατηγορίες είναι:

  • Δρόμοι
  • Δρόμοι και μονοπάτια (όλα τα Ways)
  • Διασταυρώσεις - τα σημεία στα οποία διασταυρώνονται τα Ways
  • Είσοδοι - αυτά είναι σημεία σε ένα κτίριο που έχουν επισημανθεί ως είσοδος.
  • Διαβάσεις - διαβάσεις δρόμου
  • POIs - όλα τα σημεία ενδιαφέροντος
  • Στάσεις συγκοινωνίας - στάσεις λεωφορείων, σιδηροδρομικοί σταθμοί, στάσεις τραμ κ.ο.κ.
  • Υποκατηγορίες των POIS:
    • Πληροφορίες
    • Αντικείμενο
    • Μέρος
    • Ορόσημο
    • Κινητικότητα
    • Ασφάλεια
  • Οικισμοί και υποκατηγορίες (δείτε την επόμενη ενότητα)
    • Πόλεις
    • Κωμοπόλεις
    • Χωριά
    • Οικισμοί

Με αυτό στη θέση του, για οποιαδήποτε τοποθεσία η εφαρμογή μπορεί στη συνέχεια εύκολα να βρει

  • “Όλες τις στάσεις συγκοινωνίας εντός 50μ” ή
  • “Την πλησιέστερη διασταύρωση μπροστά μου” ή
  • “Τον πλησιέστερο οικισμό, χωριό, κωμόπολη ή πόλη”

Με αυτό στη θέση του, η δημιουργία των ηχητικών επεξηγήσεων είναι απλώς ζήτημα ερωτήματος (query) προς τα δεδομένα με βάση την τρέχουσα τοποθεσία και κατεύθυνση. Καθώς ο χρήστης μετακινείται σε ένα πλέγμα πλακιδίων, αυτό ενημερώνεται ώστε να επικεντρώνεται γύρω από την τρέχουσα τοποθεσία.

Περισσότερα δεδομένα

Ένα από τα προβλήματα με το πολύ τοπικό μας πλέγμα δεδομένων χάρτη είναι ότι σημαίνει ότι μπορούμε να ‘δούμε’ το πολύ περίπου 1χλμ προς οποιαδήποτε κατεύθυνση. Αυτό είναι εντάξει όταν περιγράφουμε τι βρίσκεται μπροστά μας, αλλά μερικές φορές θα θέλαμε να δώσουμε περισσότερο πλαίσιο. Το κύριο παράδειγμα αυτού είναι όταν η εφαρμογή χρησιμοποιείται και ο χρήστης δεν περπατάει.

Όταν η εφαρμογή ανιχνεύσει ότι ο χρήστης ταξιδεύει με ταχύτητα μεγαλύτερη από 5 μέτρα ανά δευτερόλεπτο, αλλάζει τον τρόπο με τον οποίο περιγράφει τον κόσμο. Αντί να επεξηγεί κάθε διασταύρωση και POI, επεξηγεί λιγότερο συχνά και μόνο κοντινούς δρόμους. Το πρόβλημα με αυτό είναι ότι το να γνωρίζεις το όνομα ενός δρόμου δεν είναι πολύ χρήσιμο αν δεν ξέρεις σε ποια πόλη βρίσκεται.

Για να προσπαθήσουμε να το αντιμετωπίσουμε αυτό, αναλύουμε επίσης τώρα τα δεδομένα χάρτη σε χαμηλότερο επίπεδο ζουμ και εξάγουμε δεδομένα από το στρώμα place. Αυτό περιέχει τα ονόματα κωμοπόλεων, πόλεων, γειτονιών, χωριών κ.ο.κ. Ένα ζήτημα με τη χαρτογράφηση των πραγμάτων είναι ότι δεν υπάρχει πάντα ένα προφανές όριο μεταξύ αυτών των μερών. Το OpenStreetMap έχει μερικές φορές όρια πόλεων στη βάση δεδομένων του, αλλά ακόμη και όταν συμβαίνει αυτό, μέχρι να φτάσει στον χάρτη πλακιδίων μας αυτή η πληροφορία συχνά χάνεται. Αυτό που έχουμε είναι η τοποθεσία όπου σχεδιάζονται τα ονόματα των μερών στον χάρτη. Αυτά ταξινομούνται και στη συνέχεια η εφαρμογή θα βρει τον πλησιέστερο οικισμό, χωριό, κωμόπολη ή πόλη στον χρήστη και θα το αναφέρει.

Για πολλές πόλεις, το πραγματικό όνομα της πόλης δεν θα ανακοινωθεί ποτέ, επειδή οι περισσότερες πόλεις χωρίζονται σε μικρότερες υποδιαιρέσεις όπως γειτονιές, αλλά αυτές δίνουν επιπλέον πλαίσιο που είναι πολύ χρήσιμο. Απλώς να θυμάστε ότι επειδή η εφαρμογή αναφέρει ότι βρίσκεστε κοντά σε έναν δρόμο σε μια συγκεκριμένη γειτονιά, αυτό σημαίνει απλώς ότι η ετικέτα για εκείνη τη γειτονιά είναι το πλησιέστερο σημείο και μπορεί να είναι λανθασμένη ή ακόμη και στην άλλη πλευρά ενός ποταμού.

Περισσότερο πλαίσιο

Όσο περισσότερο πλαίσιο μπορεί να προστεθεί στις περιγραφές, τόσο το καλύτερο, εφόσον παραμένει συνοπτικό και προβλέψιμο. Ένα από τα ζητήματα που είδαμε με την περιγραφή διασταυρώσεων είναι ότι συχνά υπήρχαν εμπλεκόμενα ‘ανώνυμα’ Ways. Αυτά είναι Ways που δεν έχουν όνομα. Στα δεδομένα χαρτογράφησης αυτά μπορεί να είναι απλώς ένα μονοπάτι, μια διαδρομή ή ένας βοηθητικός δρόμος, αλλά χωρίς περισσότερο πλαίσιο δεν είναι πολύ χρήσιμα στις περιγραφές κειμένου. Ευτυχώς, μπορούμε να κάνουμε καλύτερα, οπότε αυτό που κάνει η εφαρμογή είναι ότι κάθε φορά που πρόκειται να ανακοινώσει ένα ανώνυμο Way, εξετάζει αν μπορεί να βρει κάποιο επιπλέον πλαίσιο για αυτό.

  • Είναι πεζοδρόμιο; Πολλές περιοχές του OpenStreetMap έχουν πλέον πεζοδρόμια χαρτογραφημένα ξεχωριστά από τους δρόμους. Αυτά συνήθως φέρουν την ετικέτα sidewalk αλλά κανονικά δεν αναφέρουν ποιος είναι ο δρόμος του οποίου αποτελούν το πεζοδρόμιο.

    Όταν η εφαρμογή συναντήσει ένα ανώνυμο πεζοδρόμιο, αναζητά έναν δρόμο που νομίζει ότι εκτείνεται δίπλα του και τον χρησιμοποιεί για να ονομάσει το πεζοδρόμιο. Αυτό αποδεικνύεται πολύ σημαντικό για τις επεξηγήσεις μας. Αντί να ανακοινώνει κάθε διασταύρωση πεζοδρομίου, καθώς προχωράμε κατά μήκος ενός πεζοδρομίου, οι επεξηγήσεις γίνονται σαν να κινούμασταν κατά μήκος του σχετιζόμενου δρόμου. Αντί για “Ταξιδεύοντας δυτικά κατά μήκος μονοπατιού” έχουμε “Ταξιδεύοντας δυτικά κατά μήκος της Moor Road”. Ο χρήστης βρίσκεται στο χαρτογραφημένο πεζοδρόμιο, αλλά η περιγραφή έχει περισσότερο νόημα.

  • Καταλήγει σε ένα κατονομαζόμενο Way; Πολύ συχνά υπάρχουν πεζόδρομοι που ενώνουν δύο δρόμους μεταξύ τους. Κοιτάζοντας και τα δύο άκρα του μονοπατιού μπορούμε εύκολα να προσθέσουμε αυτό το πλαίσιο, ώστε προς τη μία κατεύθυνση μπορεί να είναι “Μονοπάτι προς Moor Road” και πλησιάζοντας από το άλλο άκρο μπορεί να είναι “Μονοπάτι προς Roselea Drive”. Αυτό γίνεται μόνο όπου το μονοπάτι δεν διακλαδίζεται· αν διακλαδίζεται σε δύο ανώνυμα μονοπάτια τότε δεν προσπαθούμε να προσθέσουμε αυτό το πλαίσιο.

  • Καταλήγει κοντά σε έναν δείκτη; Εάν ένα ανώνυμο Way ξεκινά ή καταλήγει κοντά σε έναν δείκτη, αυτό χρησιμοποιείται για να το περιγράψει, π.χ. “Μονοπάτι προς τη διασταύρωση του μεγάλου δέντρου”. Ο χρήστης μπορεί να προσθέσει δείκτες όπου θέλει, και προσθέτοντας δείκτες κατά μήκος δικτύων μονοπατιών μπορεί να προσθέσει πλαίσιο σε μια ολόκληρη διαδρομή.

  • Εισέρχεται ή εξέρχεται από ένα POI; Εάν ένα ανώνυμο Way ξεκινά έξω από ένα POI και καταλήγει μέσα του (ή αντίστροφα), τότε μπορούμε να προσθέσουμε αυτό το πλαίσιο, π.χ. “Διαδρομή προς το Lennox Park”.

  • Καταλήγει κοντά σε μια Είσοδο; Εάν ένα ανώνυμο Way ξεκινά ή καταλήγει πιο κοντά σε μια Είσοδο, τότε μπορούμε να προσθέσουμε αυτό το πλαίσιο, π.χ. “Βοηθητικός δρόμος προς το Best Buy”.

  • Καταλήγει κοντά σε ένα Ορόσημο ή Μέρος; Εάν ένα ανώνυμο Way ξεκινά ή καταλήγει πιο κοντά σε ένα Ορόσημο, τότε μπορούμε επίσης να προσθέσουμε αυτό το πλαίσιο, π.χ. “Βοηθητικός δρόμος προς τον Καθεδρικό Ναό St. Giles”.

  • Είναι αδιέξοδο; Η εφαρμογή επισημαίνει ως αδιέξοδο όποια ανώνυμα Ways δεν οδηγούν πουθενά.

  • Περνά από κάποια σκαλιά; Εάν το ανώνυμο Way περνά πάνω από μια γέφυρα, μέσα από μια σήραγγα ή πάνω/κάτω από σκαλιά, τότε αυτό σημειώνεται και προστίθεται στο πλαίσιο. Αυτό είναι ξεχωριστό από την επισήμανση προορισμού, οπότε είναι δυνατό πλαίσιο όπως “Μονοπάτι πάνω από γέφυρα προς το Lennox Park”.

Αυτά τα πλαίσια προστίθενται με τη σειρά, οπότε είναι δυνατό να υπάρχει “Μονοπάτι προς Park Lane μέσω σκαλιών” προς τη μία κατεύθυνση και “Μονοπάτι προς Lennox Park μέσω σκαλιών” προς την άλλη κατεύθυνση. Ο κατονομαζόμενος δρόμος έχει προτεραιότητα κατά την έξοδο από το πάρκο, αλλά το πάρκο χρησιμοποιείται κατά την είσοδο σε αυτό.

Μελλοντικό πλαίσιο

Υπάρχουν διάφορα επιπλέον πλαίσια που ελπίζουμε να προσθέσουμε στο μέλλον, μεταξύ των οποίων:

  • Πλαίσιο για Ways που ακολουθούν γραμμικά υδάτινα χαρακτηριστικά, π.χ. “Μονοπάτι δίπλα στον ποταμό Dee”
  • Πλαίσιο για Ways που ακολουθούν την άκρη υδάτινων όγκων “Μονοπάτι δίπλα στον ταμιευτήρα Milngavie”
  • Πλαίσιο για Ways που ακολουθούν σιδηροδρόμους, π.χ. “Μονοπάτι δίπλα σε σιδηρόδρομο”. Αυτό θα μπορούσε ακόμη και να περιλαμβάνει το όνομα της σιδηροδρομικής γραμμής
  • Προσθήκη επιπλέον περιεχομένου σε γέφυρες και σήραγγες, τι βρίσκεται πάνω ή κάτω από αυτές, π.χ. “Μονοπάτι μέσω γέφυρας πάνω από σιδηρόδρομο προς Moor Road”

Ηχητικές επεξηγήσεις

Τώρα που έχουμε τα δεδομένα χάρτη σε μια μορφή που μπορούμε να χρησιμοποιήσουμε εύκολα, η δημιουργία επεξηγήσεων είναι πραγματικά αρκετά απλή.

Επεξηγήσεις κατά το περπάτημα

Κατά το περπάτημα, οι ηχητικές επεξηγήσεις που μπορούν να συμβούν είναι (κατά σειρά προτεραιότητας):

  1. Περιγραφή του πόσο μακριά βρίσκεται ο τρέχων προορισμός
  2. Περιγραφή μιας επερχόμενης διασταύρωσης
  3. Περιγραφή των 5 πλησιέστερων σημείων ενδιαφέροντος

Όλες οι επεξηγήσεις έχουν περιορισμένη συχνότητα ώστε να μην επαναλαμβάνονται πολύ συχνά. Εάν ο χρήστης σταματήσει να κινείται, τότε οι επεξηγήσεις θα σταματήσουν, και ακόμη και όταν κινείται, μια επεξήγηση δεν θα επαναλαμβάνεται σε κάθε νέα τοποθεσία GPS. Η συχνότητα, όπως στην εφαρμογή iOS, είναι:

  • Κάθε 60 δευτερόλεπτα για τον τρέχοντα προορισμό
  • Κάθε 30 δευτερόλεπτα για μια επερχόμενη διασταύρωση
  • Κάθε 60 δευτερόλεπτα για ένα σημείο ενδιαφέροντος

Οι επεξηγήσεις μπορούν να φιλτραριστούν μέσω του μενού ρυθμίσεων, και σίγουρα υπάρχει περιθώριο να διευρυνθεί αυτή η συμπεριφορά.

Επεξηγήσεις όταν ταξιδεύετε πιο γρήγορα

Όταν ταξιδεύετε με ταχύτητα μεγαλύτερη από 5 μέτρα ανά δευτερόλεπτο, η επεξήγηση του τρέχοντος προορισμού εξακολουθεί να γίνεται, αλλά οι επεξηγήσεις διασταυρώσεων και σημείων ενδιαφέροντος αντικαθίστανται από μια επεξήγηση που περιγράφει περίπου πού βρίσκεται ο χρήστης. Αυτό δίνει μια κοντινή στάση συγκοινωνίας, ένα σημείο ενδιαφέροντος που μας περιέχει, π.χ. μέσα σε ένα μεγάλο πάρκο, ή έναν κοντινό δρόμο και οικισμό. Αυτά χρησιμοποιούν τα δεδομένα που περιγράφηκαν προηγουμένως, και υπάρχει προφανές περιθώριο για να επιτραπεί η προσαρμογή αυτού στο μέλλον.

Δείκτες και Διαδρομές

Ως επί το πλείστον, οι δείκτες και οι διαδρομές είναι απλώς μια λειτουργία του περιβάλλοντος χρήστη που δεν βασίζεται ούτε στο GPS ούτε πραγματικά στα δεδομένα χάρτη. Οι δείκτες είναι κατονομαζόμενες τοποθεσίες που ο χρήστης θέλει να αποθηκεύσει, και οι διαδρομές είναι μια ταξινομημένη λίστα αυτών των δεικτών. Το περιβάλλον χρήστη για τη δημιουργία και των δύο είναι παρμένο απευθείας από την έκδοση iOS.

Αναπαραγωγή διαδρομής

Η αναπαραγωγή διαδρομής είναι εκεί που οι διαδρομές ζωντανεύουν. Όταν αναπαράγεται μια διαδρομή, δημιουργείται ένα ηχητικό σήμα στον πρώτο δείκτη της διαδρομής. Μόλις ο χρήστης πλησιάσει αυτόν τον δείκτη, η διαδρομή μετακινεί αυτόματα το ηχητικό σήμα στον επόμενο δείκτη της διαδρομής. Εάν δεν υπάρχουν άλλοι δείκτες, τότε η αναπαραγωγή της διαδρομής τελειώνει.

Συμπέρασμα

Ελπίζουμε ότι αυτό έδωσε κάποια εικόνα για το πώς λειτουργεί η εφαρμογή. Η εφαρμογή αναπτύσσεται συνεχώς με βάση τα σχόλια των χρηστών, οπότε παρακαλούμε επικοινωνήστε μαζί μας εάν υπάρχει κάτι που πιστεύετε ότι θα μπορούσε να προστεθεί.


This site uses Just the Docs, a documentation theme for Jekyll.