Σχεδίαση και Ανάπτυξη Εξατομικευμένης Εφαρμογής Κινητού Ηλεκτρονικού Εμπορίου

Μέγεθος: px
Εμφάνιση ξεκινά από τη σελίδα:

Download "Σχεδίαση και Ανάπτυξη Εξατομικευμένης Εφαρμογής Κινητού Ηλεκτρονικού Εμπορίου"

Transcript

1 Σχεδίαση και Ανάπτυξη Εξατομικευμένης Εφαρμογής Κινητού Ηλεκτρονικού Εμπορίου Γκιντσιούδης Σταύρος ΜΕΤΑΠΤΥΧΙΑΚΗ ΕΡΓΑΣΙΑ Επιβλέπων Καθηγητής: Γεωργιάδης Χρήστος Εξεταστές: Μανιτσάρης Αθανάσιος Τμήμα Εφαρμοσμένης Πληροφορικής Πανεπιστήμιο Μακεδονίας Θεσσαλονίκη Μήνας Έτος 1

2 Copyright Γκιντσιούδης Σταύρος, 2008 Με επιφύλαξη παντός δικαιώματος. All rights reserved. Η έγκριση της μεταπτυχιακής εργασίας από το Τμήμα Εφαρμοσμένης Πληροφορικής του Πανεπιστημίου Μακεδονίας δεν υποδηλώνει απαραιτήτως και αποδοχή των απόψεων του συγγραφέα εκ μέρους του Τμήματος. 2

3 ΠΕΡΙΛΗΨΗ Η ραγδαία αύξηση του αριθμού των κινητών συσκευών τα τελευταία χρόνια, ο οποίος υπολογίζεται ότι σε λίγα χρόνια θα έχει ξεπεράσει τον αριθμό των ηλεκτρονικών υπολογιστών, σε συνδυασμό με τις νέες τεχνολογίες που χρησιμοποιούνται στις κινητές συσκευές (GPS, GPRS), έχουν ως αποτελέσματα την δημιουργία ολοένα και περισσότερων εφαρμογών m-commerce. Οι περισσότερες εφαρμογές που δημιουργούνται είναι Location-Based Services (LBS), οι οποίες εκμεταλλεύονται το βασικό πλεονέκτημα που έχουν οι κινητές συσκευές έναντι των σταθερών ηλεκτρονικών υπολογιστών, το οποίο είναι η δυνατότητα κίνησης της συσκευής. Αντικείμενο της παρούσα διπλωματικής εργασίας είναι η περιγραφή των βασικών αρχών, με βάση τις οποίες θα πρέπει να δημιουργηθεί η διεπαφή μιας εφαρμογής m-commerce, και ιδιαίτερα οι εφαρμογές LBS, ώστε η εφαρμογή να είναι εύχρηστη και χρηστική για των χρήστη. Η δημιουργία μιας σωστής διεπαφής είναι το βασικό ζητούμενο, ώστε η εφαρμογή να τραβήξει τον χρήστη, με αποτέλεσμα να την χρησιμοποιήσει περισσότερες από μια φορά. Στο πρώτο κεφάλαιο δίνονται οι ορισμοί των όρων m-commerce και LBS. Παράλληλα περιγράφονται τα μέρη που αποτελούν ένα LBS, τα διάφορα δίκτυα που μπορούν να χρησιμοποιηθούν ώστε η συσκευή να είναι σε θέση να συνδεθεί στο Διαδίκτυο, όπως επίσης και οι διάφορες τεχνολογίες που υπάρχουν για τον εντοπισμό της θέσης της συσκευής. Στην συνέχεια γίνεται μια αναφορά στις κατηγορίες στις οποίες μπορεί να χωριστούν οι εφαρμογές LBS. Στο δεύτερο κεφάλαιο περιγράφονται τα ιδιαίτερα χαρακτηριστικά που έχουν οι εφαρμογές m-commerce και LBS. Παράλληλα γίνεται μια αναφορά στα ιδιαίτερα χαρακτηριστικά και τους περιορισμούς που θέτουν οι κινητές συσκευές, όπως επίσης και στις απαιτήσεις που έχει ένας χρήστης από τέτοιου είδους εφαρμογές. Για να είναι 3

4 επιτυχημένη μια εφαρμογή θα πρέπει να συνδυάζει αρμονικά όλους αυτούς τους περιορισμούς. Στο επόμενο κεφάλαιο γίνεται αναφορά στο 7C s, το οποίο είναι μια μεθοδολογία ανάπτυξης εφαρμογών e-commerce. Κατόπιν περιγράφεται ο τρόπος προσαρμογής του συγκεκριμένου μοντέλου για την ανάπτυξη εφαρμογών m- Commerce και LBS. Στο τέταρτο κεφάλαιο παρουσιάζεται η εφαρμογής που δημιουργήθηκε. περιγραφή και ανάλυση της Τέλος στο παράρτημα Α παρουσιάζεται ο τρόπος διαμόρφωσης του merge replication μεταξύ μιας κινητής και μιας σταθερής βάσης. 4

5 ABSTRACT The rapid increase of the number of mobile appliances in the past few years, which is calculated that in few years it will have exceeded the number of computers, in combination with the new technologies that are used in mobile appliances (GPS, GPRS), they have as a result the continuously creation of new m-commerce applications. Most applications that are created are Location-Based Services (LBS), which exploit the basic advantage that the mobile appliances have against the constant computers, which is the capability of movement of appliance. The purpose of this paper is the description of the basics principles for the proper creation of the interface of the application. The interface must be created in such a way that attracts the user, so that the user would like to use the application again. In the first chapter we describe the terms m-commerce and LBS. Besides that, there is a description of the parts that constitute a LBS, the networks that is used by the mobile appliances to connect to the Internet, as well as the various methods that is used to locate the position of the device. After that, there is a reference at the categories in which we can categorize LBS applications. In the second chapter, there is a description of the particular characteristics and restrictions that the mobile appliances set. There is also a report about the requirements that the user has from such applications. The application must be developed in such a way that takes advantage of the particular characteristics of the devices, but also takes seriously 5

6 In the third chapter there is a description of the 7C s method. The particular method is used for the development of e-commerce application. Afterwards we describe the adaption the 7C s model, so that it would be suitable for the development of m-commerce and LBS application. In the fourth chapter we describe the application that is created for the purpose of this project. Finally, in the Annex A, there is a description of configuration of merge replication. 6

7 ΠΕΡΙΕΧΟΜΕΝΑ 1 Υπηρεσίες με βάση τη Θέση (Location Based Services) Εισαγωγή Μέρη που αποτελούν ένα LBS Τύποι Location Services Ασύρματα δίκτυα Κατηγοριοποίηση με βάση την εμβέλεια Ασύρματα Δίκτυα Ευρείας Περιοχής(WWAN) Τοπικά Ασύρματα Δίκτυα (WLAN) Προσωπικά Ασύρματα Δίκτυα (WPAN) Σύγκριση Μέθοδοι Εντοπισμού θέσης και ακρίβεια Εύρεση θέσης μέσω του τηλεπικοινωνιακού δικτύου Cell- ID Βελτιώσεις Cell-ID Cell-ID + Time Advanced Cell-ID + Signal Strength ( Μέτρηση Rx / NMR) Υπολογισμός θέσης με βάση τον χρόνο άφιξης (Time Of Arrival/ TOA)

8 1.5.2 Εύρεση θέσης μέσω του κινητού τερματικού Επαυξημένη Παρατήρηση Διαφοράς Χρόνων (Enhanced Observed Time Difference / E-OTD) Global Positioning System - GPS (Καθολικό Σύστημα Εντοπισμού Θέσης) Assisted-GPS, A-GPS (Υποβοηθούμενο Καθολικό Σύστημα Εντοπισμού Θέσης) Location Based Applications Trigger Services Location--based Information Services Third Party Tracking Services Υπηρεσίες Βοήθειας Χρήστη Το μέλλον των LBS Δημιουργία εφαρμογής m-commerce/ LBS Εισαγωγή Ιδιαίτερα χαρακτηριστικά και περιορισμοί κινητών συσκευών Mobile Settings Περιορισμοί κινητών συσκευών (mobile constraints) Μέθοδοι μέτρησης ικανοποίησης χρήστη Technology Acceptance Model (ΤΑΜ) M-Commerce User Satisfaction (MCUS) Απαιτήσεις χρήστη Απαιτήσεις σχετικά με την λειτουργικότητα

9 2.4.2 Αποδοτικότητα (Profitability) Credibility (Αξιοπιστία) Μεθοδολογία Ανάπτυξης Εφαρμογής LBS Εισαγωγή C s Context Function Aesthetics Content Community Χαρακτηριστικά Λόγοι που ωθούν κάποιον να γίνει μέλος Customization Personalization Tailoring Communication Connection Commerce Προσαρμογή του 7C s στις κινητές συσκευές Context Content Commerce Customization

10 4 Περιγραφή Υλοποίηση Εργαλεία Υλοποίησης Microsoft Visual Studio.NET Microsoft SQL Server MapPoint Web Service Βάσεις εφαρμογής Ρύθμιση MapPoint reference Κώδικας Εφαρμογής Κλάσεις Εφαρμογής Κλάση Replication Κλάση GetAddres Κλάση generalpois Κλάση generalpois Κλάση viewpois Κλάση ΜakeRoute Περίπτωση 1 (pois=0) Κίνηση από την αρχή μέχρι το δεύτερο από το τέλος τμήμα Κίνηση που πραγματοποιείται στο προτελευταίο τμήμα Τέλος διαδρομής Περίπτωση 2 (pois=1) Περίπτωση 3 (pois=2) Κλάση MakeRoutePois Κυρίως Πρόγραμμα Φόρμα Εισαγωγής Δημιουργία νέου λογαριασμού

11 Φόρμα επιλογών Φόρμα ΜΑΡ Εύρεση διαδρομής Προκαθορισμένη Διαδρομή Διαδρομή προς Πρ.Αξιοθέατο Διαδρομή Προς Γεν.Αξιοθέατα Λειτουργία Timer Εμφάνιση Χάρτη Διαδρομής Πλήκτρο Επιλογές Διαδρομής Πλήκτρο Αλλαγή Είδους Διαδρομής Πλήκτρο Εύρεση Γενικών Αξιοθεάτων Πλήκτρο Συνέχιση Διαδρομής Εύρεση Γενικών Αξιοθεάτων Πλήκτρο Χάρτης Γεν. Αξιοθεάτων Πλήκτρο Πληροφορίες Αριθμών TabPage Πληροφορίες Αριθμών Χάρτης Επιλεγμένη Διαδρομή Πλήκτρο Επιλεγμένη Διαδρομή Πλήκτρο Οδηγίες Διαδρομής Πλήκτρο Κίνηση στην νέα Διαδρομή Μενού Εύρεσης Θέσης Πλήκτρο Zoom Φόρμα POIS Προσθήκη Αξιοθεάτου Πληροφορίες Προσωπικών Αξιοθεάτων Κατηγορίες Γενικών Αξιοθεάτων Συμπεράσματα - Μελλοντικές Εργασίες Βιβλιογραφία Παράρτημα Α - Merge Replication

12 1 Υπηρεσίες με βάση τη Θέση (Location Based Services) 1.1 Εισαγωγή Είναι γεγονός ότι τα τελευταία χρόνια υπάρχει μια ραγδαία τεχνολογική πρόοδος στον τομέα των δικτυακών υποδομών, όπως τα δίκτυα της επόμενης γενιάς (Next Generation Networks). Παράλληλα, η τεράστια εξάπλωση των κινητών συσκευών, όπως τα κινητά τηλέφωνα, τα PDAs ή οι υπολογιστές παλάμης (palmtops), οι οποίες έχουν δυνατότητα πρόσβασης στο Διαδίκτυο σε αρκετά ικανοποιητικές ταχύτητες, δημιούργησαν την ανάγκη δημιουργίας εφαρμογών που να μπορούν να εξυπηρετήσουν τον χρήστη οποιαδήποτε στιγμή, σε οποιοδήποτε σημείο και αν βρίσκεται. Αυτές οι υπηρεσίες ονομάζονται Mobile Commerce (m-commerce / κινητό εμπόριο). Ένα απλό ορισμό που θα μπορούσαμε να δώσουμε για τον συγκεκριμένο όρο είναι πως m-commerce είναι η μεταφορά και προσαρμογή του e-commerce στις κινητές συσκευές. Έχουν δοθεί αρκετοί ορισμοί για τον συγκεκριμένο όρο, με πιο χαρακτηριστικούς τους επόμενους: 12

13 «Με τον όρο M- commerce εννοούμε οποιαδήποτε συναλλαγή με νομισματική αξία πραγματοποιείται μέσω κινητών συσκευών» (Durlacher 1999) «M-commerce είναι οποιαδήποτε ηλεκτρονική συναλλαγή ή ανταλλαγή πληροφοριών που πραγματοποιείται με τη χρησιμοποίηση μιας κινητής συσκευής και κινητών δικτύων (ασύρματο ή switched) και έχει ως αποτέλεσμα την ανταλλαγή πληροφοριών, υπηρεσιών και αγαθών» (mobileinfo.com) Κάποια παραδείγματα τέτοιου είδους εφαρμογών είναι οι τραπεζικές συναλλαγές (m-banking), κρατήσεις θέσεων σε κινηματογράφους, κλείσιμο αεροπορικών εισιτηρίων, όπως επίσης και η ενημέρωση για τον καιρό ή την κίνηση στους δρόμους. Με βάση τα προηγούμενα παρατηρούμε ότι τα Location Based Systems (Υπηρεσίες Με Βάση τη Θέση), αποτελούν μια υποκατηγορία των εφαρμογών κινητού εμπορίου. Το χαρακτηριστικό που έχουν τα LBS είναι το γεγονός ότι είναι προσωποκεντρικές υπηρεσίες, οι οποίες δίνουν έμφαση στην θέση που βρίσκεται ο χρήστης. Θέση την οποία έχουν την δυνατότητα να γνωρίζουν με την βοήθεια της ασύρματης δικτυακής υποδομής. Δηλαδή οι location based εφαρμογές αξιοποιούν τις πληροφορίες σχετικά με τη γεωγραφική θέση του χρήστη, ώστε να του παρέχουν τις κατάλληλες πληροφορίες. Στην συνέχεια παραθέτουμε δυο παραδείγματα, ένα σχετικά με Location Based Systems και ένα m-commerce, ώστε να γίνει καλύτερα αντιληπτός ο λόγος διαφοροποίησής τους. Έστω ότι ένας χρήστης έχει επισκεφθεί κάποια ξένη πόλη, την οποία δεν γνωρίζει καθόλου, και επιθυμεί να βρει κοντά στο σημείο που βρίσκεται κάποιο εστιατόριο. Συνδεόμενος στο κατάλληλο πρόγραμμα, και επιλέγοντας τον τύπο του εστιατορίου που επιθυμεί, θα του εμφανιστεί μια λίστα με τα κοντινά εστιατόρια, τα οποία μπορεί να επισκεφθεί. Υποθέτουμε τώρα ότι ένας χρήστης θέλει να πραγματοποιήσει μια τραπεζική συναλλαγή μέσω του κινητού του. Το μοναδικό που έχει να κάνει είναι να ανοίξει τον 13

14 internet browser της κινητής του συσκευής, να μπει στην σελίδα της τράπεζάς του, και να πραγματοποιήσει την συναλλαγή που επιθυμεί. Ο τρόπος και η διαδικασία που θα ακολουθήσει θα είναι η ίδια, αφού η συναλλαγή δεν διαφοροποιείται με βάση την γεωγραφική θέση που βρίσκεται. Κάποιοι ορισμοί, σχετικά με τις Υπηρεσίες με βάση τη Θέση, που μπορούν να δοθούν είναι : «Οι Υπηρεσίες με βάση τη Θέση είναι υπηρεσίες πληροφοριών, στις οποίες οι χρήστες έχουν πρόσβαση με φορητές συσκευές μέσω ασύρματων δικτύων, και κάνουν χρήση της θέσης της φορητής συσκευής» [1] Ένας εναλλακτικός ορισμός είναι αυτός που δόθηκε από το international OpenGeospatial Consortium: «Οι Υπηρεσίες με βάση τη Θέση είναι ασύρματες-ιρ υπηρεσίες που κάνουν χρήση γεωγραφικών πληροφοριών για να εξυπηρετήσουν έναν κινούμενο χρήστη (mobile user), όπως επίσης και οποιαδήποτε εφαρμογή που εκμεταλλεύεται τη θέση του φορητής τερματικού» Με βάση τους ορισμούς που δόθηκαν προηγουμένως οι Υπηρεσίες με βάση τη Θέση αποτελούν την τομή τριών τεχνολογιών: των Γεωγραφικών Συστημάτων Πληροφοριών (GIS) και Χωρικών Βάσεων Δεδομένων (Spatial Databases) των τεχνολογιών Δικτύωσης και του Διαδικτύου (Internet) των Νέων Τεχνολογιών Πληροφόρησης και Επικοινωνίας (New Information and Communication Technologies NICTs) και των φορητών συσκευών με δυνατότητα ασύρματης δικτύωσης 14

15 Τεχνολογίες που συνθέτουν τις υπηρεσίες με βάση τη θέση Από ιστορικής πλευράς, η πληροφόρηση που παρέχεται με βάση τη θέση δεν είναι κάτι καινούριο, καθώς ως τέτοια μπορεί να θεωρηθεί η πληροφόρηση που δίνεται από συμβατικά μέσα πληροφόρησης στους δρόμους όπως ταμπέλες για την κυκλοφορία ή αφίσες που αναγγέλλουν κάποιο καλλιτεχνικό γεγονός. Ωστόσο, τα παραπάνω είναι μέσα μονόδρομης επικοινωνίας. Αντίθετα, οι Υπηρεσίες με βάση τη Θέση δίνουν τη δυνατότητα αμφίδρομης επικοινωνίας και αλληλεπίδρασης. Ο χρήστης γνωστοποιεί στον πάροχο των πληροφοριών το είδος των πληροφοριών που χρειάζεται, τις θεματικές του προτιμήσεις και τη θέση του. Αυτό δίνει τη δυνατότητα στον πάροχο να εξατομικεύει τις πληροφορίες που στέλνει στον κάθε χρήστη, έτσι ώστε να εξυπηρετούν τις ανάγκες του. Όπως φαίνεται από τα παραπάνω, τα συστήματα Υπηρεσιών με Βάση τη Θέση έχουν πολλές ομοιότητες με τα Γεωγραφικά Συστήματα Πληροφοριών (GIS) με κυριότερη ότι και τα δύο χρησιμοποιούν χωρική πληροφορία για να απαντήσουν ερωτήματα όπως «Πού βρίσκομαι;», «Τι βρίσκεται κοντά μου;» 15

16 «Πώς μπορώ να πάω στο ;». Η κυριότερη διαφορά των δύο αυτών εφαρμογών είναι ότι τα Γεωγραφικά Συστήματα Πληροφοριών απευθύνονται κυρίως σε έμπειρους επαγγελματίες, και απαιτούν μεγάλη υπολογιστική ισχύ για την λειτουργία τους, ενώ οι Υπηρεσίες με βάση τη Θέση απευθύνονται στη μεγάλη «μάζα» των απλών χρηστών για πιο περιορισμένο αριθμό εφαρμογών και δεν έχουν μεγάλες απαιτήσεις σε ότι αφορά το υλικό στο οποίο προορίζονται να εκτελεστούν. Έτσι μπορεί ο χρήστης να τις αξιοποιήσει με τη βοήθεια συσκευών με χαμηλή υπολογιστική ισχύ, μικρή αυτονομία και μικρές δυνατότητες γραφικής απεικόνισης. 1.2 Μέρη που αποτελούν ένα LBS Ένα συνηθισμένο Location Based Service αποτελείται από τα ακόλουθα τμήματα [2]: 1. Mobile Devices (Κινητές Συσκευές): αποτελούν το κύριο μέρος του LBS. Είναι το εργαλείο που έχει στα χέρια του ο χρήστης, ώστε να στέλνει τα αιτήματά του και να λαμβάνει τις πληροφορίες που θέλει. Οι πληροφορίες που αποστέλλονται μπορεί να είναι κείμενο, εικόνες, ηχητικά μηνύματα ή videos. Τέτοιου είδους συσκευές είναι τα κινητά τηλέφωνα τελευταίας γενιάς, τα PDA, ενώ στην ίδια κατηγορία μπορούν να συμπεριληφθούν και συσκευές όπως ο υπολογιστής αυτοκινήτου (car navigation). 16

17 2. Communication Network ( Δίκτυο Επικοινωνίας) : το ασύρματο δίκτυο, με το οποίο μεταφέρεται από τον χρήστη στον πάροχό του το αίτημά του, και στην συνέχεια τα δεδομένα που ζήτησε ο χρήστης από τον πάροχο. 3. Positioning Component (Σύστημα Εντοπισμού Θέσης) : όπως αναφέρθηκε και προηγουμένως το χαρακτηριστικό των LBS είναι ότι οι διάφορες υπηρεσίες που προσφέρονται γίνονται με βάση την θέση του χρήστη. Η εύρεση της θέσης μπορεί να γίνει είτε με βάση το δίκτυο της κινητής τηλεφωνίας είτε με την χρήση GPS (Global Positioning System). Ένας άλλος τρόπος είναι να εισάγει ο χρήστης μόνος του την θέση. Η τελευταία μέθοδος χρησιμοποιείται κυρίως για στατικές εφαρμογές, όπως, παραδείγματος χάριν, για την περιήγηση σε ένα μουσείο. 4. Service and Application Provider (Πάροχος Υπηρεσίας και Εφαρμογών): ο πάροχος της υπηρεσίας είναι ο υπεύθυνος για την γενική λειτουργία και τον συντονισμό της εφαρμογής. Επεξεργάζεται τα αιτήματα των χρηστών και αποστέλλει τα κατάλληλα δεδομένα. Τέτοιες υπηρεσίες είναι ο υπολογισμός της θέσης του χρήστη, η εύρεση μιας διαδρομής, όπως επίσης και ο εντοπισμός κάποιων υπηρεσιών που βρίσκονται σε κοντινή απόσταση από τον χρήστη, όπως νοσοκομεία, εστιατόρια κλπ. 5. Data and Content Provider (Πάροχος Περιεχομένου και Δεδομένων ) : για τα διάφορα δεδομένα που αποστέλλονται στον χρήστη δεν είναι υπεύθυνοι, στην μεγάλη πλειοψηφία των περιπτώσεων, οι πάροχοι υπηρεσιών και εφαρμογών που περιγράφηκαν προηγουμένως. Για την αποθήκευση και συντήρηση των διαφόρων δεδομένων υπεύθυνοι είναι οι πάροχοι περιεχομένου και δεδομένων. Οι συγκεκριμένοι πάροχοι διατηρούν βάσεις δεδομένων με γεωγραφικά κριτήρια. Δεδομένα τα οποία αποστέλλονται στους παρόχους υπηρεσιών όταν αυτά ζητηθούν (π.χ. σε mapping agencies). 17

18 Η επόμενη εικόνα δείχνει σχηματικά τα μέρη ενός LBS, που περιγράφθηκαν προηγουμένως. Μέρη που συνθέτουν ένα ολοκληρωμένο LBS 1.3 Τύποι Location Services Γενικά οι υπηρεσίες χωρίζονται σε τρεις κατηγορίες [3] : 1. Pull services: οι υπηρεσίες τύπου Pull παρέχουν δεδομένα στον χρήστη κατόπιν δικής του επιθυμίας. Ο χρήστης στέλνει μια αίτηση στον πάροχο υπηρεσιών ζητώντας κάποια δεδομένα, και ο πάροχος του στέλνει τις πληροφορίες που ζήτησε. Παραδείγματα υπηρεσίας Pull είναι ο υπολογισμός κάποιας διαδρομής, η εύρεση νοσοκομείου ή εστιατορίου σε κοντινή απόσταση από την θέση που βρίσκεται ο χρήστης εκείνη την στιγμή. 18

19 2. Push services: η διαφοροποίηση της συγκεκριμένης υπηρεσίας από την προηγούμενη είναι πως τώρα την υπηρεσία την ενεργοποιεί ο Service Provider, αντί του χρήστη. Βέβαια και σε αυτή την περίπτωση, την τελική έγκριση, ώστε να παραλάβει τελικά τα δεδομένα που αποστέλλονται, την δίνει ο χρήστης. Παραδείγματος χάριν, ο χρήστης έχει εγγραφεί σε μια υπηρεσία, ώστε κάθε μέρα στις 8 το πρωί να ενημερώνεται για τις καιρικές συνθήκες και την μετεωρολογική πρόβλεψη στην περιοχή του. Επειδή όμως είναι πιθανόν να μην βρίσκεται κάθε πρωί στο ίδιο μέρος, ο Service Provider ζητάει από το πάροχο της κινητής τηλεφωνίας να τον ενημερώσει για την τοποθεσία του χρήστη, ώστε να αποστείλει στην συνέχεια τις κατάλληλες επιθυμίες. 3. Tracking services: η λογική της συγκεκριμένης υπηρεσίας είναι ότι κάποιος (χρήστης ή κάποια υπηρεσία) επιθυμεί να εντοπίσει την θέση ενός χρήστη. Βέβαια και σε αυτή την περίπτωση ο χρήστης, την θέση του οποίου θέλουμε να εντοπίσουμε, πρέπει να έχει δώσει την άδειά του ώστε να μπορεί να εντοπιστεί από άλλους χρήστες ή υπηρεσίες. Το πιο χαρακτηριστικό παράδειγμα είναι η υπηρεσία Friend-Finder, μέσω της οποίας μπορεί κανείς να βρει το ακριβές σημείο που βρίσκεται κάποιος φίλος του, ενώ στην συνέχεια μπορεί να βρει και διάφορες διαδρομές, ώστε να πάει στο ίδιο μέρος. 19

20 1.4 Ασύρματα δίκτυα Όπως αναφέρθηκε και προηγουμένως, τα ασύρματα δίκτυα μεταφέρουν πληροφορίες σχετικά με τον χρήστη αλλά και τα ερωτήματα του χρήστη από την φορητή συσκευή στον πάροχο της υπηρεσίας. Στην συνέχεια, αφού ο πάροχος ολοκληρώσει τις απαιτούμενες διαδικασίες για την ανάκτηση των πληροφοριών, τις αποστέλλει μέσω της ασύρματης δικτυακής υποδομής στον χρήστη. Τα ασύρματα δίκτυα μπορούν να χωριστούν σε κατηγορίες με δύο τρόπους. Ο πρώτος τρόπος κατηγοριοποίησης είναι με βάση την εμβέλειά τους, η οποία καθορίζεται από τους φυσικούς περιορισμούς των ραδιοκυμάτων αλλά και τον σκοπό για τον οποίο έχει δημιουργηθεί το δίκτυο. Ο δεύτερος τρόπος κατηγοριοποίησης είναι με βάση την τοπολογία του δικτύου, δηλαδή αν υπάρχει κάποια υποδομή στο δίκτυο, με στατικούς και ακίνητους κόμβους, μέσω των οποίων συνδέονται όλοι οι υπόλοιποι στο δίκτυο, ή αν οι ίδιοι οι χρήστες αποτελούν κόμβους, μέσω των οποίων συνδέονται άλλοι χρήστες [2]. Κατηγοριοποίηση Ασυρμάτων Δικτύων 20

21 1.4.1 Κατηγοριοποίηση με βάση την εμβέλεια Όπως φαίνεται και από την προηγούμενη εικόνα, τα δίκτυα, σε σχέση με την εμβέλειά τους, χωρίζονται σε τρεις κατηγορίες: 1. Ασύρματα Δίκτυα Ευρείας Περιοχής (Wireless Wide Area Networks, WWAN), όπως είναι το GSM (Global System for Mobile communications / Groupe Spécial Mobile), το GPRS (General Packet Radio Service) και το UMTS (Universal Mobile Telecommunications System) 2. Τοπικά Ασύρματα Δίκτυα (Wireless Local Area Networks, WLAN), όπως για παράδειγμα το ΙΕΕΕ Προσωπικά Ασύρματα Δίκτυα (Wireless Personal Area Networks, WPAN), όπως για παράδειγμα ένα δίκτυο με Bluetooth Ασύρματα Δίκτυα Ευρείας Περιοχής(WWAN) Τα WWAN μπορούν να καλύψουν με την εμβέλειά τους μια περιοχή από 100 μέτρα έως 35 χιλιόμετρα. Το φάσμα των συχνοτήτων που χρησιμοποιούν συνήθως δεν είναι ελεύθερο, πράγμα που σημαίνει ότι για την χρήση ενός φάσματος συχνοτήτων πρέπει να χορηγηθεί άδεια, ενώ δεν μπορεί να χρησιμοποιηθεί από κάποιον άλλον. Η πρώτη γενιά τέτοιου είδους δικτύων (αναλογικά δίκτυα 1G) προορίζονταν μόνο για την μεταφορά φωνής, και για αυτό τον λόγο ο ρυθμός μετάδοσης των δεδομένων ήτανε πολύ μικρός (4,8 kbps). Η δεύτερη γενιά δικτύων (ψηφιακά δίκτυα 2G), μπορούσαν να υποστηρίξουν μεγαλύτερους ρυθμούς μεταφοράς δεδομένων. Τέτοιου είδους δίκτυα είναι το GSM και το GPRS,με ρυθμό 21

22 μετάδοσης kbps και kbps αντίστοιχα. Παρ όλη την αύξηση της ταχύτητας, η μεταφορά πολυμεσικών πληροφοριών δεν ήτανε δυνατή. Εξαιτίας αυτών των περιορισμών στην μετάδοση των δεδομένων, αναπτύχθηκαν τα δίκτυα τρίτης γενιάς (3G), όπως π.χ. το UMTS, τα οποία μπορούν να υποστηρίξουν ρυθμό μετάδοσης μέχρι και 2 Mbps. Παράλληλα υποστηρίζουν καλύτερη κρυπτογράφηση των δεδομένων, ενώ προσφέρουν δυνατότητες για ακριβέστερη εύρεση της θέσης της φορητής συσκευής, Το μειονέκτημα που παρουσιάζουν τα 3G δίκτυα σε σχέση με τα δίκτυα της προηγούμενης γενιάς είναι πως απαιτούνται περισσότεροι σταθμοί βάσης, αφού η εμβέλεια των κυψελών τους είναι μικρότερη. Επιπλέον η κάλυψη που παρέχουν οι κυψέλες των δικτύων δεν είναι σταθερή, επειδή αυτή εξαρτάται από την πυκνότητα των χρηστών, καθώς επίσης και από την χρήση που κάνουν. Ασύρματα Δίκτυα Ευρείας Περιοχής 22

23 Τοπικά Ασύρματα Δίκτυα (WLAN) Τα WLAN μπορούν να καλύψουν αποστάσεις από 10 έως 150 μέτρα σε κλειστούς χώρους, ενώ σε εξωτερικούς χώρους η κάλυψη μπορεί να φτάσει μέχρι και τα 300 μέτρα. Σε αντίθεση με τα WWAN, το φάσμα των συχνοτήτων που χρησιμοποιούν δεν απαιτεί ειδική άδεια. Επιπλέον οι ρυθμοί μετάδοσης των δεδομένων είναι πολύ μεγαλύτεροι από τους αντίστοιχους των WWAN ( μπορούν να φτάσουν και τα 100 Mbps). Η πολύ μεγάλη ταχύτητα που προσφέρεται, κάνει τα WLAN ιδανικά για την ανταλλαγή δεδομένων. Επιπρόσθετα τα τερματικά δεν συνδέονται σε σταθμούς βάσης, όπως στα WWAN, αλλά σε σημεία πρόσβασης (Access Points), τα οποία είναι πιο εύκολα στην δημιουργία, ενώ μπορούν να συνδεθούν και κατευθείαν μεταξύ τους (ad hoc). Τοπικά Ασύρματα Δίκτυα 23

24 Προσωπικά Ασύρματα Δίκτυα (WPAN) Τα WPAN προσφέρουν συνδεσιμότητα μικρής εμβέλειας, περίπου 10 μέτρων με προοπτική στο άμεσο μέλλον να φτάσει μέχρι και τα 100 μέτρα. Χρησιμοποιεί ελεύθερο φάσμα συχνοτήτων και ο ρυθμός μετάδοσης είναι περίπου 0,5 Mbps, ενώ οι συσκευές συνδέονται μεταξύ τους σε τοπολογία ad hoc. Τα περισσότερα τέτοια δίκτυα είναι βασισμένα στην τεχνολογία BlueTooth και σε σχέση με τα WLAN προσφέρουν μεγαλύτερη ασφάλεια και καλύτερη υποστήριξη στην μεταφορά φωνής. Προσωπικά Ασύρματα Δίκτυα 24

25 1.4.2 Σύγκριση Στον επόμενο πίνακα παρουσιάζονται συνοπτικά τα χαρακτηριστικά των ασύρματων δικτύων που αναφέρθηκαν σε αυτή την ενότητα [4]. Ρυθμός Δικτυακή Τεχνολογία Μέση Εμβέλεια Μετάδοσης Frequency (Mbps) WWAN GSM (2G) απόσταση μεταξύ GPRS σταθμών βάσης UTMS (3G) 100m - 35 km 2.0 ~ 900 MHz, Μη ελεύθερο φάσμα WLAN Ultra- Wideband 10 m 100 IEEE a 50 m 54 IEEE b 100 m 11 ~ 2.4 & 5 GHz, ελεύθερο φάσμα συχνοτήτων Bluetooth 10 m 1 WPAN HomeRF 50 m 10 ~ 2.4 GHz, ελεύθερο φάσμα συχνοτήτων IrDA 1-1,5 m (infrared / απαραίτητη 1-16 ελεύθερο φάσμα υπέρυθρες) οπτική επαφή συχνοτήτων συσκευών 25

26 Από τα παραπάνω προκύπτει ότι τα ασύρματα δίκτυα τύπου WLAN και WPAN είναι κατάλληλα για εφαρμογές που απαιτούν μεγάλη χωρική διακριτικότητα (granularity) και κυρίως για εσωτερικούς χώρους (π.χ. ένα δημόσιο κτίριο, ένα μουσείο ή ένα πολυκατάστημα). Αντιθέτως, τα ασύρματα δίκτυα τύπου WWAN μπορούν να υποστηρίξουν εφαρμογές σε μεγαλύτερη κλίμακα (όπως η διαχείριση στόλου και η τηλεματική) και περισσότερο εφαρμογές με μικρό θεματικό εύρος. 1.5 Μέθοδοι Εντοπισμού θέσης και ακρίβεια Η συνύπαρξη πολλών διαφορετικών Δικτύων Κινητών Τηλεπικοινωνιών σε συνδυασμό με την ανάπτυξη εφαρμογών και υπηρεσιών που έχουν ως προαπαιτούμενο την θέση του χρήστη, αλλά και οι αυξημένες δυνατότητες των κινητών συσκευών, έχουν ως αποτέλεσμα την εμφάνιση ποικίλων τεχνολογιών και μεθόδων για την εύρεση της θέσης της συσκευής, με όσο το δυνατόν μεγαλύτερη ακρίβεια. Αν πάρουμε ως δεδομένο ότι ο χρήστης δεν εισάγει μόνος του την θέση του, τότε ο αυτόματος εντοπισμός της θέσης της συσκευής μέσα στο δίκτυο μπορεί να επιτευχθεί με δυο διαφορετικές τεχνικές [5]: 1. Εύρεση θέσης μέσω του τηλεπικοινωνιακού δικτύου : με βάση αυτή την προσέγγιση, το τερματικό είτε ανιχνεύεται αυτόματα από το δίκτυο, είτε στέλνει κάποιο σήμα, που επιτρέπει στο δίκτυο να βρει τη θέση του. 2. Εύρεση θέσης απευθείας από το κινητό τερματικό : σε αυτή την περίπτωση, το ίδιο το τερματικό υπολογίζει τη θέση του με βάση σήματα που φθάνουν σε αυτό από σταθμούς βάσης 26

27 Μέθοδοι Εντοπισμού Θέσης Και στις δυο περιπτώσεις, η ακρίβεια στην εύρεση της θέσης εξαρτάται από διάφορους παράγοντες, αρκετοί από τους οποίους εξαρτώνται από το φυσικό περιβάλλον που βρίσκεται ο χρήστης, καθώς επίσης και από την τοπολογία της περιοχής που βρίσκεται. Παράλληλα υπάρχουν και περιπτώσεις, στις οποίες η εύρεση της θέσης γίνεται με βάση το κινητή συσκευή, με την βοήθεια του δικτύου (terminal-based network-assisted ). Αν, παραδείγματος χάριν, η κινητή συσκευή έχει ενσωματωμένο πομπό GPS, τότε η εύρεση της θέσης γίνεται απευθείας από το κινητό, ενώ η δικτυακή υποδομή χρησιμοποιείται ως βοήθεια στις λειτουργίες που εκτελούνται στην συσκευή, είτε χρησιμοποιούνται για επαλήθευση της θέσης που βρέθηκε από την συσκευή. 27

28 1.5.1 Εύρεση θέσης μέσω του τηλεπικοινωνιακού δικτύου Cell- ID Είναι η απλούστερη μέθοδος εύρεσης της θέσης του χρήστη, η οποία προσφέρεται κατευθείαν από το δίκτυο του χρήστη [5]. Ο εντοπισμός γίνεται με βάση την κυψέλη, στην οποία συνδέεται ο χρήστης, και με δεδομένο ότι η εταιρία γνωρίζει την τοπολογία των κελιών της. Η συγκεκριμένη μέθοδος υπάρχει από τότε που αναπτύχθηκαν τα δίκτυα κινητής τηλεφωνίας. Ένα μεγάλο μειονέκτημα που έχει είναι ότι η ακρίβεια της θέσης εξαρτάται από το πλήθος των κυψελών που υπάρχουν στην περιοχή. Σε μια αστική περιοχή μπορεί να είναι της τάξεως των μέτρων, ενώ στην ύπαιθρο μπορεί να είναι αρκετά χιλιόμετρα. Η συγκεκριμένη μέθοδος συχνά αναφέρεται και ως Cell Global Identification (CGI). Εύρεση Θέσης με την μέθοδο Cell-ID 28

29 Βελτιώσεις Cell-ID Όπως είδαμε, η προηγούμενη μέθοδος παρουσιάζει κάποια προβλήματα ακρίβειας στον εντοπισμό της θέσης. Στην συνέχεια παρατίθενται δυο μέθοδοι, οι οποίοι βελτιώνουν την ακρίβεια στην εύρεση της θέσης του χρήστη [5] [6] Cell-ID + Time Advanced Ένας τρόπος να βελτιωθεί κάπως η ακρίβεια στην εύρεση της θέσης είναι με την χρήση μιας συγκεκριμένης παραμέτρου του Cell-ID, της Time Advanced ΤΑ, ο χρόνος δηλαδή που χρειάζεται το σήμα να ταξιδέψει από την κινητή συσκευή στον σταθμό βάση και πάλι πίσω. Ο συνολικός χρόνος ονομάζεται GSM bit, και είναι περίπου 3,69 μs. Αυτό σημαίνει ότι ο χρόνος για να ταξιδέψει το σήμα από την συσκευή στην κεραία είναι, στην χειρότερη περίπτωση, 1,85 μs, δηλαδή περίπου 550 μέτρα. Το πρόβλημα με την χρήση του ΤΑ είναι ότι οι διάφορες αποστάσεις υπολογίζονται ως πολλαπλάσια του 550. Αυτό έχει ως αποτέλεσμα να μην έχουμε πάλι απόλυτη ακρίβεια στην θέση του χρήστη. Δηλαδή αν ο χρήστης είναι σε απόσταση μέτρων από την κεραία, με την χρήση του ΤΑ η απόσταση που θα υπολογίσει η Cell-ID είναι 1100 μέτρα. Αυτή η μέθοδος είναι αρκετά καλή σε αγροτικές περιοχές, που όπως αναφέρθηκε προηγουμένως κάθε κεραία καλύπτει μια περιοχή αρκετών χιλιομέτρων. Για να βελτιώσουμε αυτή την απόκλιση της απόστασης από το την κεραία, μπορούμε να χρησιμοποιήσουμε επιπλέον κελιά, που καλύπτουν ένα τομέα ενός μεγαλύτερου κελιού. Παράλληλα κάποιες επιπρόσθετες πληροφορίες, όπως ότι ο χρήστης ταξιδεύει μπορούν να χρησιμεύσουν για την βελτίωση της ακρίβειας στην εύρεση θέσης. 29

30 Cell-ID + Signal Strength ( Μέτρηση Rx / NMR) Η κινητή συσκευή μετράει συνεχώς την ένταση του σήματος που λαμβάνει από κάθε ένα σταθμό βάσης, από τον οποίο δέχεται σήμα. Με αυτό τον τρόπο η κινητή συσκευή μπορεί να λαμβάνει και να αποστέλλει πληροφορίες μέσω του σταθμού βάσης, από τον οποίο δέχεται το βέλτιστο σήμα. Με την βοήθεια της συγκεκριμένης πληροφορίας είναι δυνατή η εύρεση της θέσης της κινητής συσκευής, λαμβάνοντας υπόψιν το ποσοστό της εξασθένησης του σήματος όσο η απόσταση μεταξύ κινητής συσκευής και σταθμού βάσης αυξάνει. Η συγκεκριμένη μέθοδος έχει αρκετά μειονεκτήματα, αφού η εμβέλεια και η δύναμη του σήματος επηρεάζεται από τα χαρακτηριστικά του εδάφους, ενώ δεν μπορεί να λειτουργήσει σε κλειστό χώρο [5] Υπολογισμός θέσης με βάση τον χρόνο άφιξης (Time Of Arrival / TOA) Η συγκεκριμένη μέθοδος είναι μια μέθοδος βασισμένη στον χρόνο. Τα διάφορα σήματα που αποστέλλονται από την κινητή συσκευή ανιχνεύονται από διάφορους σταθμούς, οι οποίοι είναι γεωγραφικά διασκορπισμένοι. Για να ξεκινήσει η αποστολή σημάτων η συσκευή αναγκάζεται από το δίκτυο να εκκινήσει διαδικασία για διαπομπή (handover) Σταθμού Βάσης που θα το εξυπηρετεί. Οι σταθμοί στην συνέχεια υπολογίζουν τον χρόνο αποστολής-παραλαβής σημάτων με την κινητή συσκευή. Κατόπιν, όσοι επίγειοι σταθμοί έχουν λάβει το σήμα της συσκευής συνεργάζονται μεταξύ τους, και με την χρήση τριγωνομετρικών μεθόδων βρίσκουν την θέση της συσκευής. Η ακρίβεια που προσφέρει αυτή η μέθοδος είναι αρκετά μεγαλύτερη σε σχέση με τις προηγούμενες μεθόδους, απαιτείται όμως απόλυτος συγχρονισμός, της τάξης 30

31 των εκατοντάδων nsec, τουλάχιστον 3 σταθμών βάσης. Παράλληλα ο εντοπισμός της θέσης μπορεί να παρουσιάσει κάποια καθυστέρηση, ανάλογα με την κίνηση που θα υπάρχει στο δίκτυο. Γενικά είναι καλή μέθοδος για περιπτώσεις έκτατης ανάγκης και κλήσης αριθμών άμεσης επέμβασης (όπως το 911 για τις Η.Π.Α. και το 112 για Ευρωπαϊκή Ένωση), αλλά λόγω περιορισμένων δυνατοτήτων δεν είναι καλή μέθοδος για εμπορικές εφαρμογές. Μέθοδος Εύρεσης Θέσης ΤΟΑ 31

32 1.5.2 Εύρεση θέσης μέσω του κινητού τερματικού Επαυξημένη Παρατήρηση Διαφοράς Χρόνων (Enhanced Observed Time Difference / E-OTD) Είναι και αυτή μια μέθοδος βασισμένη στον χρόνο (time-based), σύμφωνα με την οποία η τερματική συσκευή κάνει μετρήσεις του χρόνου άφιξης του σήματος από τρεις διαφορετικούς σταθμούς βάσης. Η καθυστέρηση διάδοσης που παρατηρείται εξαρτάται από την απόσταση του τερματικού από τον σταθμό βάσης. Η λογική της εύρεσης της θέσης είναι ίδια με την μέθοδο ΤΟΑ, με την διαφορά ότι οι διάφορες μετρήσεις και τριγωνομετρικοί υπολογισμοί γίνονται στην φορητή συσκευή. Η συγκεκριμένη μέθοδος απαιτεί κάποιες επιπλέον λειτουργίες στην κινητή συσκευή. Τα σήματα του broadcast control channel, μέρος της τυπικής εκπομπής GSM, ανιχνεύονται από την συσκευή, όπως επίσης ανιχνεύονται και κάποια επιπλέον βοηθητικά στοιχεία, τα οποία στέλνονται στην συσκευή για το E-OTD. Τέτοια στοιχεία είναι αναφορά των σταθμών βάσης που απέστειλαν σήμα, καθώς επίσης και η θέση τους. Η συγκεκριμένη μέθοδος προσφέρει αρκετά καλή ακρίβεια στην εύρεση θέση σε περιοχές με αρκετούς BTS, ενώ μπορεί να χρησιμοποιηθεί για εύρεση της θέσης και σε κλειστό χώρο. Παράλληλα δεν απαιτεί κάποια ιδιαίτερη προσθήκη λογισμικού στις φορητές συσκευές. Αντιθέτως απαιτείται ειδική δικτυακή υποδομή, με υψηλό κόστος δημιουργίας και συντήρησης, ενώ επιπλέον δεν λειτουργεί σωστά με δίκτυα τρίτης γενιάς. Ένα ακόμη μειονέκτημα που έχει είναι πως δεν λειτουργεί σωστά σε περιοχές με μικρή πυκνότητα σταθμών βάσης [4] [5]. 32

33 Μέθοδος Ε-OTD Global Positioning System - GPS (Καθολικό Σύστημα Εντοπισμού Θέσης) Η τεχνολογία GPS είναι η κυρίαρχη στο τομέα της εύρεσης θέσης. Όπως και οι μέθοδοι ΤΟΑ και E-OTD, έτσι και το GPS είναι μία time based positioning μέθοδος. Λειτουργεί με την βοήθεια των GPS δορυφόρων, οι οποίοι καλύπτουν όλη τη γη ανά πάσα στιγμή. Οι συγκεκριμένοι δορυφόροι μεταφέρουν συνεχώς ένα bit stream, στο οποίο περιέχονται χρήσιμες πληροφορίες, όπως η ταυτότητα του δορυφόρου, ο χρόνος GPS και δεδομένα ημερολογίου (almanac data), με τα οποία ενημερώνει ο δορυφόρος τον δέκτη GPS για το που ακριβώς βρίσκεται κατά τη διάρκεια όλης της ημέρας. Κάθε GPS δορυφόρος μεταβιβάζει τα δεδομένα (almanac data) που αφορούν πληροφορίες σχετικά με την τροχιά του, καθώς και με την τροχιά κάθε άλλου δορυφόρου στο σύστημα. Κάθε δορυφόρος καλύπτει μια περιοχή, την οποία μπορούμε να φανταστούμε σαν μια σφαίρα με κέντρο τον ίδιο τον δορυφόρο. Λαμβάνοντας η συσκευή σήμα από ένα δορυφόρο, γνωρίζει ότι βρίσκεται 33

34 μέσα στην νοητή σφαίρα που αυτός δημιουργεί. Με την βοήθεια τριών συνολικά δορυφόρων μπορεί να βρεθεί με ακρίβεια η δυσδιάστατη θέση του χρήστη ( το σημείο τομής των τριών νοητών σφαιρών), ενώ με την βοήθεια και τέταρτου δορυφόρου μπορούμε προσδιορίσουμε και το υψόμετρο που βρίσκεται. Το GPS είναι το πρώτο σύστημα που έγινε παγκοσμίως αποδεκτό για την εύρεση της θέσης, λόγω της ακρίβειας που προσφέρει (3 50 μ.), αλλά και εξαιτίας του γεγονότος ότι δεν επηρεάζεται από τις κατά τόπους καιρικές συνθήκες. Αποτελείται από 24 δορυφόρους, οι οποίοι κινούνται σε ελλειπτικές τροχιές με κοινή κλίση, για τον έλεγχο των οποίων υπάρχει ένας κύριος σταθμός στις ΗΠΑ, καθώς επίσης και 5 μικρότεροι ανά τον κόσμο, ώστε να επιτυγχάνεται η απρόσκοπτη λειτουργία του συστήματος. Είναι σχεδιασμένο έτσι ώστε κάθε περιοχή να την καλύπτουν τουλάχιστον 6 δορυφόροι, οποιαδήποτε στιγμή της ημέρας. Το μειονέκτημα όμως που έχει είναι ότι οι συσκευές πρέπει να υποστηρίζουν την υπηρεσία GPS, ενώ το σήμα του εξασθενεί σε κλειστούς χώρους. Επειδή το GPS ελέγχεται από τις ΗΠΑ, υπάρχει ένα project από την πλευρά της Ευρωπαϊκής Ένωσης, με την ονομασία Galileo positioning system ή απλά Galileo το οποίο υπολογίζεται να τελειώσει το 2012, ως μια εναλλακτική υπηρεσία εύρεσης της θέσης. [6] Assisted-GPS, A-GPS (Υποβοηθούμενο Καθολικό Σύστημα Εντοπισμού Θέσης) Το συγκεκριμένο σύστημα δημιουργήθηκε ως εξέλιξη του απλού GPS, ώστε να δοθούν λύσεις σε κάποιες από τις δυσλειτουργίες του GPS, ιδιαίτερα στην αδυναμία που αυτό παρουσίαζε στον εντοπισμό συσκευών σε κλειστό χώρο. Αυτό το πρόβλημα διορθώθηκε με την αποστολή των πληροφοριών του GPS μέσω των κυψελωτών δικτύων, τα οποία έχουν προσαρμοσμένους δέκτες GPS σε νευραλγικούς κόμβους [5]. 34

35 1.6 Location Based Applications Η ικανότητα της LBS τεχνολογίας να εντοπίζει την θέση ενός τερματικού είναι περισσότερο ένα χαρακτηριστικό γνώρισμα της συγκεκριμένης υπηρεσίας, παρά μια αυτόνομη υπηρεσία. Βοηθάει τις ήδη υπάρχουσες υπηρεσίες να βελτιώσουν τις παροχές τους προς τους χρήστες και να προσθέσουν νέα χαρακτηριστικά στις υπηρεσίες τους. Κάποιες γενικές κατηγορίες εφαρμογών παρουσιάζονται στο επόμενο σχήμα.[2] Κατηγορίες εφαρμογών LBS Οι εφαρμογές Υπηρεσιών Θέσης που παρουσιάζεται στην προηγούμενη εικόνα, μπορούν να κατηγοριοποιηθούν σε τέσσερις οικογένειες, ανάλογα με κάποια κοινά χαρακτηριστικά που διαθέτουν. Οι τέσσερις αυτές οικογένειες είναι [3] : 35

36 1. Trigger Services 2. Location-based Information Services 3. 3rd Party Tracking Services 4. End-User Assistance Services Trigger Services Οι συγκεκριμένες υπηρεσίες θέτονται σε λειτουργία αυτόματα όταν γίνει αντιληπτό ότι το τερματικό εισέρχεται σε μια προκαθορισμένη περιοχή. Αν και είναι σχεδιασμένες να συμπεριλαμβάνουν μια σχετικά μεγάλη περιοχή, οι συγκεκριμένες υπηρεσίες, για να λειτουργήσουν σωστά, απαιτούν μεγάλη ακρίβεια στην θέση της συσκευής. Δυο τέτοιοι τύποι υπηρεσιών είναι οι ακόλουθοι: Διαφημιστικές υπηρεσίες/ προνομιακές υπηρεσίες : παραδείγματα τέτοιων υπηρεσιών είναι οι πληροφορίες που παρέχονται σε ταξιδιώτες, οι οποίοι μόλις προσγειώθηκαν σε ένα αεροδρόμιο και επιθυμούν να μάθουν πληροφορίες σχετικά με τα ταξί. Άλλο ένα παράδειγμα είναι διαφημίσεις ιδιαίτερου ενδιαφέροντος, όταν ο χρήστης περνάει μπροστά από ένα συγκεκριμένο μαγαζί. Στην συγκεκριμένη περίπτωση ο χρήστης θα πρέπει να έχει δηλώσει τα ενδιαφέροντά του, ώστε να αποφεύγονται ανεπιθύμητα μηνύματα. Location-based τιμολόγηση : ανάλογα με την περιοχή που βρίσκεται η συσκευή, μπορεί να υπάρξει και διαφορετική χρέωση για κάποια υπηρεσία. Ένα τέτοιο πολύ απλό παράδειγμα είναι η υπηρεσία roaming. Όταν ο χρήστης βρίσκεται στο εξωτερικό, τότε το κόστος μιας τηλεφωνικής συνδιάλεξης είναι πολύ μεγαλύτερο από το αντίστοιχο κόστος όταν βρίσκεται εντός συνόρων. 36

37 1.6.2 Location--based Information Services Στην συγκεκριμένη κατηγορία ανήκουν όλες οι υπηρεσίες, στις οποίες η πληροφορία φιλτράρεται και παραδίδεται στον χρήστη με βάση την θέση που βρίσκεται. Η πληροφορία μπορεί να μεταβιβαστεί με διάφορους τρόπους, όπως το SMS, μέσω φωνητικής λειτουργίας (IVR - Interactive Voice Response), μέσω ενός τηλεφωνικού κέντρου ή μέσω WAP (Wireless Application Protocol). Το επίπεδο της ακρίβειας της θέσης ποικίλλει, ανάλογα με τις απαιτήσεις και την φύση της κάθε υπηρεσίας. Παραδείγματος χάριν, μια υπηρεσία πλοήγησης στους δρόμους, απαιτεί απόλυτη ακρίβεια της θέσης του τερματικού. Αντίθετα για υπηρεσίες μετεωρολογικής πρόβλεψης, η ακρίβεια δεν χρειάζεται να είναι πολύ μεγάλη. Κατά συνέπεια, οι υπηρεσίες της συγκεκριμένης υπηρεσίας, ανάλογα με το ύφος τους, μπορούν να προσφέρονται μέσω οποιασδήποτε τεχνολογίας εύρεσης θέσης. Δηλαδή η υπηρεσία πλοήγησης απαιτεί τεχνολογία GPS, ενώ η μετεωρολογική πρόβλεψη μπορεί να πραγματοποιηθεί και με την χρήση της τεχνολογίας Cell-ID. Παραδείγματα τέτοιων υπηρεσιών είναι τα ακόλουθα: Που βρίσκομαι/ Που πάω : ο χρήστης θέλει να πάρει πληροφορίες σχετικά με διάφορα αξιοθέατα που βρίσκονται κοντά στο σημείο που είναι, ή ζητάει να πληροφορηθεί την συντομότερη διαδρομή από το σημείο που βρίσκεται σε κάποιο άλλο. Πλοήγηση και Κίνηση στους δρόμους : σε τέτοιου είδους υπηρεσίες ο χρήστης είναι συνήθως εν κινήσει με κάποιο μέσο, και ζητάει να ενημερωθεί για την κίνηση στους κοντινούς του δρόμους, για τυχόν συντομότερη διαδρομή, όπως επίσης και καθοδήγηση στην διαδρομή του. 37

38 Location-Based παιχνίδια : υπάρχουν διάφορα παιχνίδια τα οποία απαιτούν γνώση της θέσης του χρήστη-παίκτη. Ένα τέτοιο παράδειγμα, με χιλιάδες παίκτες, είναι το Geocaching, το οποίο είναι ένα παιχνίδι εύρεσης θησαυρού. Αυτού του είδους οι εφαρμογές είναι ένας συνδυασμός location-based πληροφοριών αλλά και υπηρεσιών εύρεσης ατόμων (friend-finder), αφού αρκετά παιχνίδια είναι ομαδικά, και απαιτούνται πληροφορίες σχετικά με τη θέση των άλλων παικτών. Διάφορες άλλες υπηρεσίες : υπάρχει μια ευρεία γκάμα υπηρεσιών που ανήκουν στην συγκεκριμένη κατηγορία LBS εφαρμογών, όπως η μετεωρολογική πρόβλεψη ή οι πληροφορίες σχετικά με αξιοθέατα που βρίσκονται σε κοντινή απόσταση Third Party Tracking Services Σε αυτού του είδους τις εφαρμογές, εκτός από την θέση που βρίσκεται ο χρήστης, απαιτείται και η εύρεση της θέσης και του άλλου χρήστη. Η ακρίβεια της θέσης πρέπει να είναι η μέγιστη δυνατή, ενώ θα πρέπει να υπολογιστεί ότι ο χρήστης συνήθως βρίσκεται εν κινήσει. Τέτοιου είδους υπηρεσίες είναι οι εξής: Διαχείριση εργατικού δυναμικού/ Διαχείριση μεταφορικών μέσων : η συγκεκριμένη υπηρεσία αφορά εταιρίες, όπως είναι οι εταιρίες μεταφορών, οι εταιρίες ταξί, εταιρίες courier και διάφορες άλλες, οι οποίες επιθυμούν να γνωρίζουν την θέση των υπαλλήλων τους, αλλά και των οχημάτων τους, σε συνεχή βάση. Χρησιμοποιείται για να γίνεται έλεγχος και καταγραφή παράδοσης εμπορευμάτων, καθοδήγηση σε δρόμους, εντολές για διεκπαιρέωση διαφόρων εργασιών, που βρίσκονται κοντά στον χρήστηυπάλληλο κτλ. 38

39 Καταγραφή περιουσιακών στοιχείων : προσαρμογή μικροτσίπ σε διάφορα αντικείμενα, ώστε σε περίπτωση απώλειας, να γίνεται εύκολα ο εντοπισμός τους. Εύρεση φίλων : μέσω της συγκεκριμένης υπηρεσίας μπορεί κανείς να πληροφορηθεί την θέση και το πόσο κοντά βρίσκεται με κάποιον που επιθυμεί. Παραδείγματος χάριν, να μπορούν οι γονείς να εντοπίζουν το που βρίσκονται τα παιδιά τους μέσω της θέσης του κινητού τους τηλεφώνου. Location-Based παιχνίδια : όπως αναφέραμε και προηγουμένως, το τελευταίο διάστημα έχουν δημιουργηθεί αρκετά παιχνίδια, που βασίζονται στην θέση του χρήστη Υπηρεσίες Βοήθειας Χρήστη Οι συγκεκριμένες υπηρεσίες έχουν ως στόχο να βοηθήσουν τον χρήστη, όταν η κινητή συσκευή του δεν έχει σήμα είτε όταν ο χρήστης έχει άμεση ανάγκη από βοήθεια. Για να επιτευχθεί η άμεση βοήθεια του χρήστη, θα πρέπει να μπορεί να προσδιοριστεί η ακριβής θέση του, ώστε η κλήση που θα κάνει να μεταφερθεί σε ένα κέντρο βοήθειας (αστυνομία, ασθενοφόρο, οδική βοήθεια) που βρίσκεται κοντά στο σημείο που είναι ο χρήστης, ώστε η επέμβαση να είναι άμεση. Παράδειγμα τέτοιας υπηρεσίας είναι ο πανευρωπαϊκός αριθμός άμεσης ανάγκης 112, τον οποίο μπορεί να καλέσει ο χρήστης, όταν έχει άμεση ανάγκη την βοήθεια. Καλώντας τον αριθμό, η κλήση του μεταφέρεται στο κοντινότερο τηλεφωνικό κέντρο, στο οποίο μπορεί να εξυπηρετηθεί. 39

40 1.7 Το μέλλον των LBS Οι Υπηρεσίες με Βάση την Θέση είναι μια σχετικά καινούργια τεχνολογία, με δυνατότητες μεγάλης εξέλιξης. Ήδη, όπως παρουσιάστηκε και προηγουμένως, υπάρχει μια ευρεία γκάμα εφαρμογών. Με βάση μια έρευνα που έκανε η Berg Insight ( υπολογίζεται ότι το 2012 θα υπάρχουν, μόνο στην Ευρώπη, περίπου εκατό (100) εκατομμύρια χρήστες τέτοιων υπηρεσιών. Παράλληλα, σε άλλη έρευνα της ίδιας εταιρίας, η οποία έγινε πρόσφατα (Ιανουάριο-Φεβρουάριο του 2008) και στην οποία συμμετείχαν εταιρίες κολοσσοί, όπως οι Ericsson, Alcatel, Nokia, Sony Ericsson, Microsoft, T-Mobile, Vodafone, France Telecom, Google, Swisscom, τα αποτελέσματα ήτανε άκρως ενθαρρυντικά [7]. Η έρευνα πραγματοποιήθηκε ξεχωριστά στους mobile operators και στους LBS developers. Αν και σχεδόν όλοι οι mobile operators έχουν αναπτύξει τουλάχιστον μια δική τους εφαρμογή LBS, και παρόλο που η μεγάλη πλειοψηφία χρήσης τέτοιων εφαρμογών γίνεται μέσω κινητών συσκευών νέας γενιάς, εντούτοις οι LBS developers πιστεύουν κατά 70% ότι μπορούν να προωθήσουν τις εφαρμογές τους, παρακάμπτοντας τους operators. Στην ερώτηση για το τι είδους εφαρμογές αναπτύσσουν κυρίως οι mobile operators, η έρευνα έδειξε ότι αναπτύσσουν κυρίως εφαρμογές τοπικής πληροφόρησης, π.χ. για την κίνηση στην περιοχή που βρίσκεται ο χρήστης, όπως επίσης και για τις καιρικές συνθήκες. 40

41 Είδη εφαρμογών που αναπτύσσονται από mobile operators 41

42 Αντίθετα, όταν ρωτήθηκαν ποια είναι η πιο επιτυχημένη εμπορικά εφαρμογή, το αποτέλεσμα έδειξε ότι η πιο επιτυχημένη ήτανε η Resource tracking, όπως αποθήκευση προτερημάτων και έλεγχος πορείας προσωπικού. Εμπορική επιτυχία εφαρμογών των mobile operators 42

43 Στη ίδια ερώτηση, οι πιο επιτυχημένες εφαρμογές των LBS developers είναι αυτές που σχετίζονται με turn-to-turn navigation και mapping, με καθοδήγηση δηλαδή στους δρόμους, καθώς επίσης και με πρόσβαση και αναζήτηση σε χάρτες για κάθε είδους πληροφορία. Εμπορική επιτυχία εφαρμογών των LBS developers Ένα άλλο ενδιαφέρον στοιχείο είναι ότι στην ερώτηση σχετικά με την δικτυακή τεχνολογία για τον εντοπισμό θέσης που πιστεύουν ότι θα παίξει καταλυτικό ρόλο στο μέλλον, το μεγαλύτερο ποσοστό και των δυο κατηγοριών των ερωτώμενων απάντησε το συνδυασμό δυο ή περισσοτέρων από τις υπάρχουσες τεχνολογίες. 43

44 Τέλος, το πιο ενθαρρυντικό σημείο για την περαιτέρω ανάπτυξη των locationbased services, είναι τα δυο σχεδιαγράμματα που ακολουθούν. Το πρώτο δείχνει τις απαντήσεις των mobile operators στο ερωτήματα αν θα αναπτύξουν έστω και μια καινούργια εφαρμογή στο τρέχον έτος, στο οποίο περίπου το 80% απάντησε θετικά, ενώ το δεύτερο δείχνει την αισιοδοξία των LBS developers, σχετικά με την προσδοκόμενη αύξηση της αγοράς των LBS. Πρόθεση mobile operators για ανάπτυξη νέων LBS εφαρμογών 44

45 Πρόβλεψη LBS developers σχετικά με την αύξηση της αγοράς των LBS 45

46 2 Δημιουργία εφαρμογής m-commerce/ LBS 2.1 Εισαγωγή Ένας από τους ορισμούς που αναφέρθηκε προηγουμένως, αναφέρει ότι το m- Commerce είναι η μεταφορά του e-commerce στις φορητές συσκευές. Ο συγκεκριμένος ορισμός είναι εν μέρη σωστός, όταν αναφερόμαστε στην λογική της προσφοράς διαφόρων υπηρεσιών στους χρήστες που βρίσκονται σε απόσταση, όπως η αγορά κάποιων προϊόντων ή οι συναλλαγές με τράπεζες. Αντιθέτως, αυτός ο ορισμός μπορεί να θεωρηθεί λανθασμένος, αν θέλουμε να αναφερθούμε στον τρόπο σχεδίασης και ανάπτυξης των εφαρμογών που χρησιμοποιούν οι χρήστες, αλλά και στο είδος των εφαρμογών που επιθυμούν να χρησιμοποιήσουν οι χρήστες. 46

47 Οι εφαρμογές κινητού εμπορίου διακρίνονται για τα ακόλουθα μοναδικά χαρακτηριστικά του, τα οποία προσφέρουν αρκετά πλεονεκτήματα σε σχέση με τις εφαρμογές για συμβατικούς υπολογιστές [8]: Ubiquity(Συνεχής παρουσία): με τον όρο ubiquity εννοούμε την δυνατότητα του χρήστη να συνδέεται στο πρόγραμμα και να ανταλλάσσει πληροφορίες με το σύστημα, ανεξαρτήτως της γεωγραφικής θέσης στην οποία βρίσκεται. Η ανταλλαγή πληροφοριών μπορεί να είναι κάποια τραπεζική συναλλαγή είτε πληροφορίες σχετικά με την τρέχουσα θέση του και γενικές πληροφορίες για την περιοχή στην οποία κινείται ο χρήστης. Immediacy (αμεσότητα) : το συγκεκριμένο χαρακτηριστικό υποδηλώνει την δυνατότητα σύνδεσης και χρησιμοποίησης της εφαρμογής την στιγμή που το επιθυμεί ο χρήστης. Η αμεσότητα είναι απαραίτητη για εφαρμογές στις οποίες ο χρόνος είναι πολύτιμος και απαιτείται άμεση πρόσβαση στο σύστημα, όπως χρηματιστηριακές πληροφορίες. Παράλληλα αυτή η αμεσότητα είναι επιθυμητή και σε άλλες εφαρμογές, όπως η εύρεση της θέσης του χρήστη και η αποστολή διαφόρων πληροφοριών σχετικά με την τρέχουσα θέση του χρήστη. Localisation (Εντοπισμός): είναι η δυνατότητα εύρεσης της θέσης της συσκευής και η προσαρμογή των πληροφοριών που παρέχονται στον χρήστη. Αυτό είναι και το κύριο χαρακτηριστικό των Location Based Services. Instant connectivity: άμεση πρόσβαση στο Διάδικο. Αυτή η δυνατότητα είναι πλέον εφικτή, με την βοήθεια του GPRS (General Packet Radio Service). 47

48 Pro-active functionality/ Personalazitation: η δυνατότητα της εφαρμογής να προσαρμόζεται στις ιδιαίτερες επιθυμίες και ανάγκες του κάθε χρήστη. Αυτό το χαρακτηριστικό είναι αρκετά χρήσιμο και στις επιχειρήσεις, αλλά και στους χρήστες μιας εφαρμογής. Με την εξατομίκευση μιας εφαρμογής ο χρήστης λαμβάνει μόνο τις πληροφορίες που επιθυμεί και πραγματικά τον ενδιαφέρουν. Παράλληλα οι επιχειρήσεις, γνωρίζοντας τα χαρακτηριστικά (ηλικία, φύλο) και τα ενδιαφέροντα του χρήστη, μπορούν να τα χρησιμοποιήσουν για πιο στοχευμένη διαφήμιση διαφόρων προϊόντων. Simple authentication procedure : οι κινητές τηλεφωνικές συσκευές λειτουργούνε με την χρήση της κάρτας SIM (Subscriber Identity Module). Κάθε κάρτα SIM είναι καταγεγραμμένη στην βάση της τηλεφωνικής εταιρίας με τα προσωπικά στοιχεία του χρήστη. Με αυτό τον τρόπο γίνεται ο προσδιορισμός του χρήστη. Σε συνδυασμό και με τον προσωπικό αριθμό PIN (Personal Identification Number) γίνεται η ταυτοποίηση του χρήστη, χωρίς να χρειάζεται κάποια χρονοβόρα διαδικασία ταυτοποίησης του χρήστη. 48

49 2.2 Ιδιαίτερα χαρακτηριστικά και περιορισμοί κινητών συσκευών Οι κινητές συσκευές, τα τερματικά που χρησιμοποιούνται για τις εφαρμογές κινητού εμπορίου, έχουν κάποια ιδιαίτερα γνωρίσματα που επηρεάζουν την σχεδίαση και υλοποίηση μιας εφαρμογής, ενώ διαφοροποιούν και το είδος των εφαρμογών που αναπτύσσονται για τις φορητές συσκευές. Η κινητικότητα των συσκευών( mobility ή mobile settings), αλλά και οι φυσικοί περιορισμοί που θέτουν οι συσκευές (mobile constraints), όπως είναι οι μικρές οθόνες, η έλλειψη πληκτρολογίου κλπ, επηρεάζουν σε καταλυτικό βαθμό τον σκοπό της εφαρμογής, την τρόπο λειτουργίας της, καθώς επίσης και το σχεδιασμό της διεπαφής της. Η σωστή κατανόηση και αξιοποίηση των πλεονεκτημάτων των κινητών συσκευών, αλλά και η προσαρμογή της εφαρμογής στους περιορισμούς που θέτουν οι φορητές συσκευές, παίζουν καταλυτικό ρόλο ώστε να η εφαρμογή που θα δημιουργηθεί να ικανοποιεί τις απαιτήσεις του χρήστη Mobile Settings Γενικά όταν αναφερόμαστε στον όρο Mobile Settings, κάνουμε αναφορά στο ιδιαίτερο περιβάλλον, μέσα στο οποίο οι χρήστες πραγματοποιούν τις διάφορες ενέργειές τους με την φορητή συσκευή, από την άποψη της τοποθεσίας, του χρόνου και του ιδιαίτερου περιβάλλοντος στο οποίο βρίσκονται. Αρκετές φορές το συναντάμε και με τον όρο Mobility (κινητικότητα). Οι διαστάσεις που αποτελούν τα Mobile Settings είναι οι εξής [10]: 1. spatiality ή spatial mobility : αναφέρεται στην κίνηση του χρήστη σε οποιοδήποτε μέρος, και την μεταφορά της συσκευής μαζί του, με αποτέλεσμα η συσκευή να μην είναι βρίσκεται σε ένα συγκεκριμένο μέρος, όπως οι επιτραπέζιοι υπολογιστές. 49

50 2. temporality ή temporal mobility : αναφέρεται στην δυνατότητα που δίνεται από την φορητές συσκευές στον χρήστη να συνδεθεί στο Διάδικο, σε οποιαδήποτε χρονική στιγμή αυτός επιθυμεί, σε όποιο μέρος και αν βρίσκεται. 3. contextuality ή contextual mobility : αναφέρεται στον κοινωνικό περίγυρο, μέσα στον οποίο ο χρήστης χρησιμοποιεί την συσκευή του, όπως παραδείγματος χάριν ο βαθμός αλληλεπίδρασης με τους ανθρώπους γύρω του και σε τι βαθμό ο χρήστης έχει την προσοχή του στραμμένη στην συσκευή, όταν χρησιμοποιεί μια εφαρμογή Περιορισμοί κινητών συσκευών (mobile constraints) Όταν αναφερόμαστε στους περιορισμούς που θέτουν οι φορητές συσκευές, κάνουμε λόγο για όλες εκείνες τις παραμέτρους που έχουν ως αποτέλεσμα την χειρότερη απόδοση των φορητών συσκευών σε σχέση με τους κανονικούς υπολογιστές. Η μείωση του μεγέθους των συσκευών, με σκοπό την ευκολότερη μεταφορά τους από τον χρήστη, έχει ως αντίκτυπο το μικρό μέγεθος της οθόνης, την απουσία πληκτρολογίου και ποντικιού, ενώ και το hardware των συσκευών είναι πολύ κατώτερο από το αντίστοιχο των επιτραπέζιων υπολογιστών. Παράλληλα και η δικτυακή υποδομή που χρησιμοποιείται θέτει κάποια προβλήματα, τα οποία πρέπει να συνυπολογιστούν κατά την διαδικασία σχεδίασης και ανάπτυξης της εφαρμογής. Οι κυριότεροι περιορισμοί που θέτουν οι φορητές συσκευές είναι οι ακόλουθοι [11] [12]: 50

51 Περιορισμένη ανάλυση οθόνης : η μικρή ανάλυση των οθονών των κινητών συσκευών είναι ένας σημαντικός παράγοντας, που επηρεάζει την σχεδίαση της διεπαφής μιας εφαρμογής. Αν και τα τελευταία χρόνια οι οθόνες των φορητών συσκευών έχουν όλο και καλύτερη ανάλυση, εντούτοις δεν έχουν φτάσει ακόμη στα επίπεδα των επιτραπέζιων υπολογιστών. Μικρό μέγεθος οθόνης : το μέγεθος των οθονών είναι ακόμη ένας βασικός περιορισμός που θέτουν οι φορητές συσκευές κατά την ανάπτυξη εφαρμογών κινητού εμπορίου. Παρά το γεγονός ότι και το μέγεθος των αυξάνει τα τελευταία χρόνια, το μέγεθός του παραμένει ιδιαίτερα μικρό. Μικρός αριθμός χρωμάτων : οι οθόνες των φορητών συσκευών έχουν την δυνατότητα αναπαράστασης χιλιάδων χρωμάτων, σε αντίθεση με τις επιτραπέζιες οθόνες, οι οποίες προσφέρουν εκατομμύρια χρωματικών αποχρώσεων στον χρήστη. Ο περιορισμένος αριθμών χρωμάτων που χρησιμοποιούνται δημιουργεί περιορισμούς στην παρουσίαση γραφικών και οπτικών μέσων, αλλά και στην χρήση τεχνικών σχετικών με το transparency, το οποίο θα έδινε την δυνατότητα στον σχεδιαστή να χρησιμοποιήσει πολλά επίπεδα (layers) στην ίδια φόρμα. Περιορισμένη υπολογιστική ισχύς : η περιορισμένη υπολογιστική ισχύς των επεξεργαστών των φορητών συσκευών είναι αποτρεπτικός παράγοντας για την χρήση σύνθετων γραφικών στην εφαρμογή. Ιδιαίτερα για τρισδιάστατα γραφικά ένα επιπλέον θέμα είναι ότι δεν υποστηρίζονται από το hardware. Απουσία συγκεκριμένου προτύπου : κάθε φορητή συσκευή έχει διαφορετικό αριθμό κουμπιών, διαφορετικά τοποθετημένα και με διαφορετικές λειτουργίες το καθένα, σε αντίθεση με τους επιτραπέζιους υπολογιστές, οι οποίοι έχουν όλοι τους ίδιους μηχανισμούς χειρισμού των εφαρμογών (πληκτρολόγιο και ποντίκι). Αυτή η 51

52 διαφορετική δομή κάθε κινητής συσκευής δημιουργεί πρόβλημα στον σχεδιαστή μιας εφαρμογής, αφού είτε θα πρέπει να προσαρμόσει την εφαρμογή σε κάθε διαφορετική συσκευή είτε η εφαρμογή θα μπορεί να λειτουργεί σωστά μόνο σε συγκεκριμένο είδος συσκευής (π.χ. PDA) Απουσία πληκτρολογίου : σε όλες τις φορητές συσκευές απουσιάζει το πληκτρολόγιο. Οι περισσότερες συσκευές προσφέρουν μερικά βασικά κουμπιά όπως είναι το Enter (Ok) ή το BackSpace (Πίσω ή Cancel). Στα PDA και Pocket Pc υπάρχει ένα εικονικό πληκτρολόγιο, ενώ υπάρχουν και μερικές συσκευές στις οποίες ο χρήστης μπορεί να γράψει, με ένα ειδικό στυλό, χαρακτήρες πάνω στην οθόνη, και η συσκευή να καταλάβει ποιο γράμμα έγραψε. Παρόλο που οι συγκεκριμένοι μέθοδοι βελτιώνουν την απουσία πληκτρολογίου, δεν μπορούν να συγκριθούν με την ευκολία που παρέχει το πληκτρολόγιο στους επιτραπέζιους υπολογιστές Απουσία ποντικιού : στους επιτραπέζιους υπολογιστές η χρήση ποντικιού είναι ένα βασικό κομμάτι της πλοήγησης του χρήστη στο γραφικό περιβάλλον του υπολογιστή. Στις φορητές συσκευές το ποντίκι απουσιάζει. Θα μπορούσαμε να πούμε ότι κατά κάποιο τρόπο υπάρχει κάποιο είδος αντικατάστασης του ποντικιού στα PDA, με την χρήση του ειδικού στυλό, με το οποίο ο χρήστης μπορεί να αλληλεπιδρά κατευθείαν με την οθόνη της συσκευής. Παρεμβολές στο δίκτυο: εξαιτίας της χρήσης ασύρματου δικτύου εμφανίζεται μεγαλύτερο ποσοστό απωλειών, το οποίο είναι περισσότερο ευάλωτο. Μικρότερο bandwidth: παρόλο που γίνονται συνεχώς προσπάθειας αύξησης του bandwidth, εντούτοις παραμένει ιδιαίτερα μικρό σε σχέση με ενσύρματη επικοινωνία. 52

53 Μεγάλες καθυστερήσεις, μεγάλη διακύμανση καθυστέρησης : οι καθυστερήσεις που μπορεί να προκύψουν μπορεί να είναι από λίγα millisecond έως αρκετά δευτερόλεπτα. Μικρότερη ασφάλεια δικτύου : η μετάδοση σήματος με ραδιοκύματα είναι πιο ευάλωτη σε επιθέσεις. Για το λόγο αυτό, η ασύρματη επικοινωνία πρέπει πάντα να περιέχει κρυπτογράφηση, αυθεντικοποίηση και διάφορους άλλους μηχανισμούς ασφαλείας, παρόλο που αυτό συνεπάγεται περισσότερη πολυπλοκότητα και μεγαλύτερες καθυστερήσεις. Συχνές αποσυνδέσεις : η παρεμβολή μεταξύ των κελιών, η περιορισμένη χωρητικότητά τους και η έλλειψη δικτυακής κάλυψης σε όλες τις περιοχές, είναι πιθανόν να οδηγήσουν σε συχνές αποσυνδέσεις κατά την διάρκεια χρήσης της εφαρμογής. 2.3 Μέθοδοι μέτρησης ικανοποίησης χρήστη Η ικανοποίηση των απαιτήσεων του χρήστη είναι μια από τις χρησιμότερες μεθόδους μέτρησης της επιτυχίας μιας εφαρμογής κινητού εμπορίου. Θα πρέπει να διευκρινιστεί ότι δεν είναι δυνατόν μια εφαρμογή να ικανοποιεί πλήρως όλους τους χρήστες. Και αυτό επειδή κάθε χρήστης έχει διαφορετικές απαιτήσεις από μια εφαρμογή, αλλά και επειδή ο καθένας την χρησιμοποιεί και για διαφορετικούς σκοπούς. Η κατανόηση των απαιτήσεων που έχει ένας χρήστης από μια εφαρμογή, είναι ένα αντικείμενο το οποίο έχει απασχολήσει ιδιαίτερα τους ερευνητές. Έχουν γίνει διάφορες προσπάθειες ώστε να αναπτυχθούν διάφοροι μέθοδοι μέτρησης των 53

54 παραμέτρων που σχετίζονται με την ικανοποίηση του χρήστη. Στην συνέχεια θα παρουσιαστούν δυο από τα κυριότερα μοντέλα μέτρησης της ικανοποίησης του χρήστη Technology Acceptance Model (ΤΑΜ) Το ΤΑΜ προτάθηκε από το 1989 (Davis, 1989, Davis et al., 1989), το οποίο προέκυψε από το TRA (Threat and Risk Assessment), διατυπώνει ως βασική του αρχή ότι η υιοθέτηση μιας εφαρμογής από τον χρήστη καθορίζεται από την πρόθεση του χρήστη να χρησιμοποιήσει το σύστημα, η οποία καθορίζεται από τα πιστεύω του χρήστη σχετικά με την εφαρμογή. Αρχικά το ΤΑΜ περιελάμβανε δυο παραμέτρους για τον υπολογισμό της πρόθεσης χρήσης της εφαρμογής, την perceived usefulness (αντιλαμβανόμενη ωφέλεια) και την perceived ease of use (αντιλαμβανόμενη ευκολία χρήσης). Αρκετοί ερευνητές που εξέτασαν το ΤΑΜ και το χρησιμοποίησαν σε δικές τους έρευνες, (Adams et al., 1992; Segars & Grover, 1993; Chin & Todd, 1995; Doll et al., 1998), διαπίστωσαν ότι τα θεμελιώδη στοιχεία του ΤΑΜ δεν καλύπτουν όλους του λόγους, οι οποίοι επηρεάζουν τον χρήστη κατά την απόφασή του για υιοθέτηση ή όχι της εφαρμογής. Κατά καιρούς έγιναν διάφορες προσθήκες και επεκτάσεις στο ΤΑΜ, ώστε οι παράμετροι που χρησιμοποιούνται για την εξέταση των λόγων υιοθέτησης της εφαρμογής, να καλύπτουν όλες τις επιρροές που δέχεται ο χρήστης και από την τεχνολογική εξέλιξη αλλά και από την ίδια την εφαρμογή. Μια αρκετά πρόσφατη εκδοχή του ΤΑΜ είναι το extended ΤΑΜ [13], στο οποίο αξιολογούνται ως λόγοι που επηρεάζουν την απόφαση του χρήστη οι εξής : Perceived ease of use (PEOU) : ο βαθμός στον οποίο ο χρήστης πιστεύει ότι η χρήση μιας τέτοιας εφαρμογής θα είναι μια απλή διαδικασία 54

55 Perceived usefulness (PU) : ο βαθμός στον οποίο ο χρήστης πιστεύει ότι η χρήση μιας τέτοιας εφαρμογής θα του προσφέρει διάφορα οφέλη Compatibility : ο βαθμός στον οποίο ο χρήστης πιστεύει ότι η χρήση μιας εφαρμογής κινητού εμπορίου για διαδικτυακές συναλλαγές είναι σύμφωνη με τις ανάγκες του, τις πεποιθήσεις του και την προηγούμενη εμπειρία του. Cost : το πιθανό κόστος της χρήσης μιας εφαρμογής, παραδείγματος χάριν το κόστος αγοράς επιπλέον εξοπλισμό, αν είναι απαραίτητος, το κόστος χρήσης της εφαρμογής (από την άποψη της πρόσβασης σε αυτήν) και τυχόν χρεώσεις για τις συναλλαγές. Perceived Risk : οι διάφοροι κίνδυνοι που πιστεύει ο χρήστης ότι θα αντιμετωπίσει κατά την διάρκεια χρήσης της εφαρμογής (π.χ. τον κίνδυνο που πιστεύει ο χρήστης ότι εμπεριέχει η χρήση της εφαρμογής, για παράδειγμα ο φόβος εισαγωγής πιστωτικής κάρτας υπό τον κίνδυνο τα στοιχεία του να γίνουν γνωστά και να χρησιμοποιηθούν από κάποιον άλλο) Τα αποτελέσματα της έρευνάς του, για τον βαθμό που οι προηγούμενες παράμετροι επηρεάζουν την υιοθέτηση μιας εφαρμογής από τον χρήστη, περιγράφονται στο επόμενο σχήμα 55

56 Λόγοι που επηρεάζουν την υιοθέτηση της εφαρμογής από τον χρήστη Ο όρος Behavioral Use BU δείχνει την πιθανότητα ο χρήστης να χρησιμοποιήσει μια εφαρμογή, ενώ το Actual Use AU είναι συχνότητα χρήσης μιας εφαρμογής και ο κατά προσέγγιση αριθμός των φορών που ένας χρήστης χρησιμοποίησε την εφαρμογή. Με βάση και το προηγούμενο σχήμα, οι λόγοι που επηρεάζουν τον χρήστη στην απόφασή του για χρήση ή όχι μιας εφαρμογής είναι οι εξής : 1. η υιοθέτηση από τον χρήστη και η χρήση μιας εφαρμογής κινητού εμπορίου μπορεί να προβλεφθεί σε μεγάλο βαθμό από τις προθέσεις του χρήστη, οι οποίες επηρεάζονται σε μεγάλο βαθμό, από το perceived cost, από το perceived risk, από το perceived usefulness και από compatibility. 56

57 2. η παράμετρος perceived ease of use δεν επηρεάζει άμεσα την behavioral Use, αλλά την επηρεάζει έμμεσα μέσω της προσδοκώμενης ωφέλειας. 3. το Compatibility παίζει τον σημαντικότερο ρόλο στην behavioral Use, και τον δεύτερο σημαντικότερο στην πραγματική χρήση. 4. από την οπτική γωνία του χρήστη της εφαρμογής, το κόστος της είναι ένας από τους σημαντικότερους παράγοντες που επηρεάζουν την απόφασή του για χρήση της εφαρμογής, και έχει μια αρκετά αρνητική επίδραση στην behavioral πρόθεση χρήσης της εφαρμογής. 5. ο αντιλαμβανόμενος κίνδυνος έχει σημαντική επίπτωση behavioral πρόθεση χρήσης. Η ασφάλεια (security) και η μυστικότητα (privacy) έχουν μεγάλη επίπτωση στην απόφαση του χρήστη, με αποτέλεσμα η έλλειψή της να είναι αποτρεπτικός παράγοντας για την επιτυχία της εφαρμογής M-Commerce User Satisfaction (MCUS) Μια άλλη μέθοδος, η οποία αναπτύχθηκε ώστε να γίνουν αντιληπτές οι απαιτήσεις του χρήστη είναι το MCUS (M-Commerce User Satisfaction) [14]. Με βάση την συγκεκριμένη έρευνα οι απαιτήσεις του χρήστη μπορούν να κατηγοριοποιηθούν σε 4 κατηγορίες: 57

58 1. content quality (ποιότητα περιεχομένου) : κατά πόσο το περιεχόμενο της εφαρμογής είναι πρόσφατο, περιέχει χρήσιμες πληροφορίες και είναι χρήσιμο στον χρήστη, εάν είναι περιεκτικό και ευανάγνωστο. Επιπλέον πόσο γρήγορα φορτώνεται η εφαρμογή, αν είναι συνεχώς διαθέσιμη και δεν παρουσιάζονται διάφορα προβλήματα κατά την χρήση της από τον χρήστη, ενώ παράλληλα αν οι διασυνδέσεις που υπάρχουν λειτουργούν κανονικά. 2. Appearance (Εμφάνιση) : έχει να κάνει με την αισθητική πλευρά της διεπαφής. Σχετίζεται με την γενική εμφάνιση της διεπαφής: κατά πόσο το layout είναι κατάλληλο, τα δεδομένα που παρουσιάζονται στην διεπαφή είναι οργανωμένα σωστά, τα χρώματα που χρησιμοποιούνται και ως φόντο αλλά και γενικά στην εφαρμογή είναι τα κατάλληλα, τα διάφορα γραφικά που παρουσιάζονται, και εάν είναι φιλική προς τον χρήστη. 3. Service Quality (Ποιότητα υπηρεσιών) : αφορούν την ταχύτητα απόκρισης του συστήματος στις ερωτήσεις που έθεταν οι χρήστες, αν υπήρχε επαρκές FAQ, το κατά πόσο η διαδικασία πληρωμής ήτανε μια σχετικά εύκολη διαδικασία και αν υπήρχε ικανοποιητική υποστήριξη από την πλευρά του συστήματος. 4. Ease of Use : αφορά την λειτουργικότητα της εφαρμογής. το κατά πόσο η διεπαφή προσφέρει αλληλεπιδραστικές μεθόδους, αν υπάρχει η δυνατότητα αναζήτησης δεδομένων, αν η εφαρμογή μπορεί να εξατομικευτεί και εάν η χρήση της εφαρμογής ήτανε εύκολη υπόθεση για τους χρήστες. 58

59 2.4 Απαιτήσεις χρήστη Γενικά θα μπορούσαμε να κατατάξουμε τις απαιτήσεις που έχει ένας χρήστης από τις εφαρμογές κινητού εμπορίου σε τρεις γενικές κατηγορίες, ανάλογα σε ποιο κομμάτι της εφαρμογής αναφέρονται [15]: 1. απαιτήσεις που σχετίζονται με την λειτουργικότητα της εφαρμογής 2. εκείνες που αφορούν την αποδοτικότητα της εφαρμογής 3. και τέλος αυτές που αναφέρονται στην αξιοπιστία της εφαρμογής Απαιτήσεις σχετικά με την λειτουργικότητα Η λειτουργικότητα σε αυτού του είδους τις εφαρμογές αναφέρεται στην διεπαφή (Interface) του προγράμματος, η οποία συνδέει τους χρήστες με την τεχνολογία που τρέχει από πίσω. Γενικά, ο χρήστης θα πρέπει να νιώθει άνετα με την διεπαφή, να μην τον κουράζει και τον καθυστερεί, ώστε να επιθυμεί και ο ίδιος στην συνέχεια να την ξαναχρησιμοποιήσει. Οι παράμετροι που καθορίζουν την λειτουργικότητα είναι οι ακόλουθοι: Απλότητα (Simplicity): η πρόσβαση στην εφαρμογή θα πρέπει να απαιτεί ελάχιστες γνώσεις του χρήστη σχετικά με τεχνολογικά θέματα. Θα πρέπει να είναι όσο πιο απλή γίνεται, ώστε να είναι εύχρηστη και από ανθρώπους χωρίς ιδιαίτερες τεχνολογικές γνώσεις. Δυνατότητα χρησιμοποίησης (Usability): η συγκεκριμένη παράμετρος αναφέρεται στην συμβολή της διεπαφής στην κατανόηση των κινητών τεχνολογιών από την πλευρά του χρήστη. 59

60 Προσαρμοστικότητα (Flexibility): αναφέρεται στην ικανότητα που πρέπει να παρουσιάζει η εφαρμογή στο να ανταποκρίνεται στα διάφορα αιτήματα του χρήστη, ανεξαρτήτως του πλήθους τους. Μια ενδεχόμενη μείωση της ταχύτητας εκτέλεσης της εφαρμογής, καθώς επίσης και ενδεχόμενη κατάρρευση του συστήματος, εξαιτίας του μεγάλου όγκου αιτημάτων από τον χρήστη, είναι αποτρεπτικός παράγοντας στην υιοθέτηση της εφαρμογής από τον χρήστη. Διεπαφή (Interface): η διεπαφή είναι η πλατφόρμα επικοινωνίας του χρήστη με το πρόγραμμα, και κατά συνέπεια με τις διάφορες τεχνολογίες που τρέχουν πίσω από το πρόγραμμα. Η διεπαφή πρέπει να είναι σχεδιασμένη κατά τέτοιον τρόπο, ώστε το πρόγραμμα να είναι απλό στην χρήση, ενώ παράλληλα θα πρέπει να υπάρχει και η κατάλληλη καθοδήγηση στον χρήστη, ο οποίος χρησιμοποιεί για πρώτη φορά την εφαρμογή. Ταχύτητα (Speed): η εφαρμογή θα πρέπει να είναι όσο πιο λιτή και ελαφριά γίνεται, ώστε να μην αργεί στην εκτέλεση των εντολών που δίνονται από τον χρήστη. Ιδιαίτερα, αν αναλογιστεί κανείς την σύγκριση, που ενδεχομένως μπορεί να κάνει κάποιος, ανάμεσα στην ταχύτητα εκτέλεσης μιας εφαρμογής σε επιτραπέζιο υπολογιστή με την ταχύτητα εκτέλεσης μια εφαρμογής σε μια κινητή συσκευή. Πρόσβαση (Accessibility): η επιθυμία κάθε χρήστη μιας κινητής εφαρμογής είναι να μπορεί να έχει πρόσβαση στην εφαρμογή οποιαδήποτε στιγμή, σε οποιοδήποτε μέρος και αν βρίσκεται. Εξάλλου αυτό είναι και ένα από τα κύρια χαρακτηριστικά της κινητικότητας. 60

61 2.4.2 Αποδοτικότητα (Profitability) Ο χρήστης της εφαρμογής θα πρέπει να νιώθει πως έχει ένα κέρδος από την χρήση της εφαρμογής. Αυτό το κέρδος, η χρησιμότητα δηλαδή της εφαρμογής στον χρήστη, μπορεί να είναι είτε δεδομένο από την αρχή και συγκεκριμένο, είτε μπορεί να είναι κάτι το αφηρημένο. Οι παράμετροι που αποτελούν την αποδοτικότητα της εφαρμογής είναι οι ακόλουθοι : Added value: ο χρήστης πρέπει να πεισθεί ότι η χρήση της κινητής εφαρμογής του προσφέρει κάποιες πληροφορίες και ευκολίες, που οι αντίστοιχες εφαρμογές σε επιτραπέζιο υπολογιστή δεν του προσφέρουν. Με αυτό τον τρόπο το πιθανότερο είναι πως ο χρήστης θα ξαναχρησιμοποιήσει την εφαρμογή. Τρόποι πληρωμής (Options of payment) : ο τρόπος πληρωμής για την χρήση της υπηρεσίας είναι ιδιαίτερα σημαντικός Οι συνηθέστερες μέθοδοι πληρωμής είναι η προ-πληρωμή της υπηρεσίας για κάποιο χρονικό διάστημα, αλλά και η πληρωμή ανάλογα με την χρήση. Όταν ο χρήστης γνωρίζει το πώς ακριβώς χρεώνεται για την χρήση της υπηρεσίας, και ότι δεν υπάρχουν κρυφές χρεώσεις, τόσο μεγαλύτερες είναι η πιθανότητες να επιστρέψει και να ξαναχρησιμοποιήσει την εφαρμογή. Κόστος (Price) : στο κόστος περιλαμβάνεται το κόστος της υπηρεσίας, καθώς επίσης και το κόστος πρόσβασης σε αυτή. Η βελτιστοποίηση της τιμής που αναφέρεται στην χρήση της εφαρμογής, είναι κάτι το οποίο ελκύει τον χρήστη. Ιδιαίτερα αν είναι περίπου ίδιο με αντίστοιχο κόστος για χρήση σε επιτραπέζιο υπολογιστή, αφού μπορεί να έχει να πρόσβαση οποιαδήποτε στιγμή αυτός επιθυμεί. 61

62 Εξατομίκευση (Individualization): μια πάρα πολύ σημαντική παράμετρος στο κατά πόσο η εφαρμογή θα έχει ανταπόκριση από τους χρήστες, είναι η δυνατότητα της εξατομίκευσης της εφαρμογής. Η εφαρμογή δεν θα πρέπει να απευθύνεται σε ένα γενικό πλαίσιο χρηστών, αποκλείοντας κάποιους άλλους που δεν έχουν παρόμοια ενδιαφέροντα. Αντιθέτως θα πρέπει να δίνεται η δυνατότητα στον χρήστη να εξατομικεύσει την εφαρμογή στις δικές του απαιτήσεις. Credibility (Αξιοπιστία) Η δημιουργία μιας αξιόπιστης εφαρμογής έχει ως αποτέλεσμα την χρησιμοποίησή της από τον χρήστη περισσότερες από μια φορές. Παραδείγματος χάριν, αν ο χρήστης αντιμετωπίσει ένα πρόβλημα κατά την διάρκεια μιας συναλλαγής, το πιθανότερο είναι πως δεν πρόκειται να χρησιμοποιήσει ξανά την εφαρμογή. Η αξιοπιστία μπορεί να χωριστεί σε δυο τομείς. Ο ένας είναι το τι ακριβώς παρέχεται από το σύστημα και ο άλλος είναι το τι αντιλαμβάνεται ο χρήστης. Φερεγγυότητα (Reliability) : η αίσθηση της φερεγγυότητας μιας εφαρμογής δημιουργείται στον χρήστη από το κύρος που έχει τόσο ο πάροχος της υπηρεσίας όσο και η εταιρία που διαχειρίζεται το κινητό δίκτυο. Αν οι δυο αυτοί παράγοντες έχουν κύρος στην αγορά, τότε ο χρήστης είναι πολύ πιθανό να χρησιμοποιήσει ξανά την υπηρεσία που παρέχεται, ανεξαρτήτως αν υπάρχουν κάποια, φυσικά μικρά, προβλήματα ασφάλειας. Ασφάλεια (Safety) : η ασφάλεια είναι το τεχνικό τμήμα της αξιοπιστίας. Θα πρέπει να διασφαλίζεται από τα διάφορα πρωτόκολλα που απαιτούνται για την μετάδοση των αιτημάτων και των πληροφοριών, αλλά και από τις διάφορες τεχνολογίες που χρησιμοποιούνται από το σύστημα. 62

63 Ακρίβεια του συστήματος (Correction of System): η ακρίβεια του συστήματος αναφέρεται στην σωστή μεταφορά στο κεντρικό σύστημα των αιτημάτων του χρήστη, καθώς επίσης και ακρίβεια στην διεπαφή. Ο κάθε χρήστης απαιτεί ακρίβεια στα δεδομένα που λαμβάνει, τα οποία πρέπει να συμβαδίζουν απόλυτα με τα αιτήματα που έχει κάνει 63

64 3 Μεθοδολογία Ανάπτυξης Εφαρμογής LBS 3.1 Εισαγωγή Όπως είδαμε και προηγουμένως, η δημιουργία μιας χρηστικής και καλαίσθητης διεπαφής είναι ένας από τους κυριότερους παράγοντες επιτυχίας μιας εφαρμογής. Για την ανάπτυξη και την σχεδίαση της διεπαφής έχει επικρατήσει το μοντέλο 7C s, το οποίο χρησιμοποιείται και για την σχεδίαση της διεπαφής σε εφαρμογές e-commerce, προσαρμοσμένο στις κινητές συσκευές, δηλαδή στους περιορισμούς των συσκευών (Mobile Constraints) και στα ιδιαίτερα χαρακτηριστικά που αυτές έχουν (Mobile Settings). Τα Mobile Constraints και Mobile Settings συνήθως αναφέρονται και ως 2Μ s. Αρχικά θα γίνει μια μικρή περιγραφή των 7C s και στην συνέχεια θα γίνει αναφορά στον τρόπο προσαρμογής των 7C s στις φορητές συσκευές. 64

65 3.2 7C s Τα στοιχεία που αποτελούν τα 7C s είναι τα εξής [16]: 1. Context (πλαίσιο εφαρμογής) : αναφέρεται στην αισθητική και την λειτουργικότητα της διεπαφής, στην εμφάνιση δηλαδή της διεπαφής 2. Content (Περιεχόμενο) : αναφέρεται στο περιεχόμενο της εφαρμογής (κείμενο, εικόνες, ήχος, βίντεο) 3. Community (Επικοινωνία) : είναι η αλληλεπίδραση δυο χρηστών μεταξύ τους, η οποία μπορεί να είναι διαδραστική (interactive) αλλά και μη-διαδραστική (non-interactive), ένας προς έναν ή μεταξύ πολλών χρηστών ταυτόχρονα 4. Customization (Εξατομίκευση) : η δυνατότητα που έχει η εφαρμογή να προσαρμόζεται στις απαιτήσεις και τα ενδιαφέροντα του χρήστη. Η προσαρμογή μπορεί να γίνεται είτε απευθείας από την εφαρμογή (tailoring προσαρμογή) είτε ο χρήστης να την προσαρμόζει μόνος του στις δικές του απαιτήσεις (personalization εξατομίκευση) 5. Communication : είναι η επικοινωνία - διάλογος που αναπτύσσεται μεταξύ της εφαρμογής και του χρήστη. Έχει τρεις μορφές: επικοινωνία εφαρμογής προς χρήστη (ειδοποίηση για ) χρήστη προς εφαρμογή (customer service request) 65

66 Αμφίδρομη επικοινωνία (Instant messaging) 6. Connection : αναφέρεται στην δυνατότητα παραπομπής από ένα site σε ένα άλλο. 7. Commerce : αναφέρεται σε εφαρμογές με δυνατότητα πώλησης προϊόντων και υπηρεσιών Context Το πλαίσιο μπορεί να χωριστεί σε δύο τμήματα, την λειτουργικότητα (function) και την αισθητική (aesthetics) της εφαρμογής Function Όταν αναφερόμαστε στην λειτουργικότητα της εφαρμογής, ή αλλιώς χρηστικότητα, αναφερόμαστε στις πληροφορίες που παρέχει η εφαρμογή. Αν το πλήθος των πληροφοριών είναι αυξημένο, τότε θα πρέπει να γίνει σωστή ταξινόμηση των πληροφοριών στα διάφορα τμήματα της εφαρμογής, ώστε ο χρήστης να λαμβάνει τις σωστές πληροφορίες που αναφέρονται στο συγκεκριμένο τμήμα, αλλά και να έχει την δυνατότητα να μεταπηδήσει σε άλλο τμήμα της εφαρμογής σχετικά εύκολα και γρήγορα. Η λειτουργικότητα επηρεάζεται και από την ταχύτητα του συστήματος, στο οποίο τρέχει η εφαρμογή, αλλά και από την αξιοπιστία του συστήματος. Όσο και αν οι δυο αυτές παράμετροι μπορούν να θεωρηθούν άσχετες ως προς την εμφάνιση της 66

67 διεπαφής, μπορούν να επηρεάσουν την γενική εικόνα που έχει ο χρήστης για την εφαρμογή. Τα στοιχεία που αναφέρονται στην συνέχεια είναι βασικά για την σωστή λειτουργία της διεπαφής της εφαρμογής: 1. Section breakdown (διαίρεση σε τμήματα) : οι πληροφορίες της εφαρμογής θα πρέπει να είναι χωρισμένες σε τμήματα, στα οποία θα πρέπει να συμπεριλαμβάνονται όλες οι πληροφορίες που αφορούν το σχετικό τμήμα. 2. Linking Structure (Συνδετική δομή) : θα πρέπει να δίνεται η δυνατότητα στον χρήστη να μεταφερθεί σε κάποιο άλλο τμήμα τις εφαρμογής εύκολα και άμεσα, ιδιαίτερα σε εκείνα τα τμήματα, στα οποία οι πληροφορίες που παρέχονται έχουν μεγαλύτερη σχέση με τις πληροφορίες που παρέχονται στο συγκεκριμένο τμήμα. 3. Navigation Tools (Εργαλεία πλοήγησης) : είναι οι διάφοροι τρόποι πλοήγησης στην εφαρμογή, ώστε να διευκολύνετε ο χρήστης. 4. Speed (Ταχύτητα) : η αλλαγή σελίδων θα πρέπει να γίνεται με όσο το δυνατόν μεγαλύτερη ταχύτητα, ενώ και η μεταφορά του χρήστη από ένα τμήμα σε κάποιο άλλο σχετικό τμήμα της εφαρμογής, θα πρέπει να γίνεται απευθείας και όχι μέσω άλλου τμήματος. 5. Reliability (Αξιοπιστία) : η αξιοπιστία της εφαρμογής σχετίζεται με το κατά πόσο η εφαρμογή κρασάρει, δεν είναι δηλαδή σε θέση να φορτωθεί στην συσκευή του χρήστη. Ένας δεύτερος παράγοντας που σχετίζεται με την 67

68 αξιοπιστία είναι αν η εφαρμογή φορτώνεται και εμφανίζεται σωστά στην οθόνη. 6. Platform Independence (Ανεξάρτητη από πλατφόρμες) : η εφαρμογή θα πρέπει να τρέχει σωστά, ανεξάρτητα από την συσκευή ή το λειτουργικό το οποίο έχει το τερματικό. 7. Media Accessibility (Χρήση πολυμέσων) : εάν η ιστοσελίδα είναι σε θέση να αναπαράγει πολυμεσικές πληροφορίες Aesthetics Η αισθητική πλευρά της εφαρμογής σχετίζεται με τα διάφορα χρώματα και πολυμέσα που περιέχει η διεπαφή. Η ποικιλία χρωμάτων, τα διάφορα γραφικά, φωτογραφίες αλλά και βίντεο και ηχητικά μέσα, συνθέτουν την οπτική πλευρά της εφαρμογής. Τα δύο χαρακτηριστικά που έχουν ιδιαίτερη βαρύτητα για την αισθητική πλευρά μιας εφαρμογής είναι τα χρώματα που χρησιμοποιούνται στην διεπαφή, καθώς επίσης και τα διάφορα οπτικά μέσα. Ανάλογα με τον σκοπό της εφαρμογής και τις πληροφορίες που αυτή παρέχει στους χρήστες, θα πρέπει να δοθεί αυξημένη βαρύτητα σε μια από τις δυο κατηγορίες. Ο λόγος είναι οι περιορισμένες δυνατότητες που συσκευών. Αυτό έχει ως συνέπεια να μην είναι εφικτό να δοθεί βαρύτητα και στις δυο αυτές μορφές, αφού αυξημένος όγκος πληροφοριών αλλά και γραφικών, θα είχαν ως αποτέλεσμα την μείωση της ταχύτητας με την οποία θα άνοιγε η διεπαφή. 68

69 3.2.2 Content Όπως αναφέραμε και προηγουμένως, όταν αναφερόμαστε στο περιεχόμενο της εφαρμογής εννοούμε τις πληροφορίες που αυτή περιέχει, αλλά και τον τρόπο που αυτές παρέχονται στον χρήστη μέσω της διεπαφής της εφαρμογής (κείμενο, βίντεο, ήχος, διάφορα άλλα γραφικά). Υπάρχουν τέσσερις διαφορετικοί τρόποι παρουσίασης των πληροφοριών. 1. Offering Mix : γενικά κάθε εφαρμογή μπορεί να προσφέρει στον χρήστη προϊόντα, πληροφορίες ή κάποιες υπηρεσίες. Στην συγκεκριμένη περίπτωση η εφαρμογή παρέχει μια μίξη και των τριών τύπων, δίνοντας περισσότερο βαρύτητα σε ένα από τους τρεις τύπους. 2. Appeal Mix : με τον συγκεκριμένο όρο αναφερόμαστε στα διαφημιστικά μηνύματα που αποστέλλονται στον χρήστη ή εμφανίζονται κατά την διάρκεια που ο χρήστης χρησιμοποιεί την εφαρμογή. Γενικά υπάρχουν δυο κατηγορίες appeal mix : η cognitive και η emotional. Η cognitive επικεντρώνεται σε μηνύματα σχετικά με την αξιοπιστία της εφαρμογής, την διαθεσιμότητα των διαφόρων προϊόντων ή υπηρεσιών, την εξυπηρέτηση και την υποστήριξη των πελατών, καθώς επίσης και τον βαθμό της εξατομίκευσης. Αντίθετα τα διαφημιστικά μηνύματα της κατηγορίας emotional επικεντρώνονται στους προσωπικούς δεσμούς που έχει ο χρήστης με το προϊόν ή την εταιρία και συνήθως παρουσιάζονται με χιούμορ και ως ιστορίες. 3. Multimedia Mix : αναφέρεται στην επιλογή του σχεδιαστή της ιστοσελίδας για την ανάμειξη και συνδυαστική χρήση κειμένου, ήχου, γραφικών και βίντεο. 69

70 4. Timeliness Mix : όλες οι εφαρμογές που σχετίζονται με την παροχή πληροφοριών στον χρήστη, θα πρέπει να τις απασχολεί ο χρόνος. Αυτό σημαίνει ότι θα πρέπει να δίνεται ιδιαίτερη βαρύτητα στο κατά πόσο οι πληροφορίες που παρέχονται είναι επίκαιρες. Αν, παραδείγματος χάριν, μια ιστοσελίδα παρέχει χρηματιστηριακές πληροφορίες, θα πρέπει το περιεχόμενο της σελίδας να ανανεώνεται συνεχώς, ώστε να είναι συνεχώς σωστά ενημερωμένο για τις τρέχουσες εξελίξεις. Αντίθετα αν μια ιστοσελίδα παρέχει τουριστικές πληροφορίες για μια περιοχή, λογικά το περιεχόμενό της θα παραμένει ίδιο για αρκετό χρονικό διάστημα. Δηλαδή ο όρος timeless mix σχετίζεται με την επιλογή του σχεδιαστή της εφαρμογής για την χρονική ευαισθησία των δεδομένων Community Η αίσθηση της κοινότητας δημιουργείται στον χρήστη μέσω συμμετοχής σε διάφορες εφαρμογές περισσοτέρων του ενός χρηστών. Όπως είδαμε και προηγουμένως η αλληλεπίδραση μπορεί να είναι ένας με έναν, ή ένας με πολλούς. Για την δημιουργία των διαφόρων κοινοτήτων θα πρέπει να δοθεί ιδιαίτερη έμφαση σε πέντε σημεία : στα χαρακτηριστικά μιας κοινότητας, στους λόγους που ωθούν τον χρήστη να γίνει μέλος σε μια κοινότητα, στον τρόπο συμμετοχής των χρηστών, στα διάφορα προνόμια που έχουν τα μέλη της κοινότητας καθώς επίσης και στον τρόπο αλληλεπίδρασης. 70

71 Χαρακτηριστικά Κάθε κοινότητα, και ανάλογα με τον σκοπό για τον οποίο δημιουργείται, έχει κάποια χαρακτηριστικά γνωρίσματα. Τα βασικά γνωρίσματα είναι τα ακόλουθα: Συνοχή (Cohesion) : τα μέλη της ομάδας θα πρέπει να έχουν κοινά ενδιαφέροντα, ώστε κάθε μέλος να αισθάνεται μέλος της ομάδας. Effectiveness (Αποτελεσματικότητα): απήχηση στην ζωή του μέλους Help (Βοήθεια) : κάθε μέλος θα πρέπει να αισθάνεται άνετα, ώστε να ζητάει βοήθεια για οτιδήποτε από κάποιο άλλο μέλος. Relationship (Σχέσεις) : η αλληλεπίδραση μεταξύ των μελών μπορεί να οδηγήσει σε φιλίες Language : μέσα σε κάθε κοινότητα αναπτύσσεται ένα ιδιαίτερο λεξιλόγιο / κώδικας επικοινωνίας. Self-regulation : η ομάδα αναπτύσσει κάποιους κανόνες σχετικά με την αλληλεπίδραση των μελών της, αναπτύσσοντας έτσι έναν μηχανισμό αυτοδιαχείρισης. 71

72 Λόγοι που ωθούν κάποιον να γίνει μέλος Τα μέλη των κοινοτήτων επιλέγουν οι ίδιοι τον βαθμό στον οποίο θα συμμετέχουν σε μια κοινότητα. Σε ώριμες κοινότητες συνήθως συμμετέχουν μέλη όλων των επιπέδων, από την στιγμή που στην κοινότητα ανά πάσα στιγμή μπορεί να προστεθεί κάποιο μέλος. Κίνητρο συμμετοχής Η συμμετοχή ενός χρήστη σε μια κοινότητα εξαρτάται από κίνητρο που έχει για να γίνει μέλος. Άλλοι επιθυμούν να γίνουν μέλη ώστε να γνωρίσουν νέα άτομα και να αναπτύξουν κοινωνικούς δεσμούς, άλλοι για να μοιραστούν ένα κοινό ενδιαφέρον ή κάποια κοινή ασχολία. Πλεονεκτήματα κοινότητας Με βάση το είδος της κοινότητας στην οποία γίνονται μέλη οι χρήστες, οι συμμετέχοντες δέχονται κάποια συναισθηματικά(emotional) πλεονεκτήματα. Μοιράζονται εμπειρίες και ενδιαφέροντα, υπάρχει αμοιβαία επιρροή μεταξύ των μελών, ικανοποίηση των αναγκών τους. Εργαλεία αλληλεπίδρασης Μια βασική απόφαση για τον τρόπο ανάπτυξης μιας κοινότητας είναι αν οι χρήστες θα αλληλεπιδρούν μεταξύ τους, και σε τι βαθμό αυτό θα πραγματοποιείται. Η σημαντικότερη απόφαση είναι για το αν η αλληλεπίδραση θα είναι διαδραστική ή όχι. 72

73 Interactive Σε αυτή τη μορφή επικοινωνίας οι χρήστες συζητάνε μεταξύ τους σε πραγματικό χρόνο. Τέτοιου είδους επικοινωνία συναντάμε στα chat rooms message boards Customization Η προσαρμογή της εφαρμογής στις απαιτήσεις και τα ενδιαφέροντα του χρήστη μπορεί να γίνει είτε απευθείας από την εφαρμογή (tailoring προσαρμογή) είτε ο ίδιος ο χρήστης να την προσαρμόσει στις απαιτήσεις του (personalization εξατομίκευση) Personalization Η εξατομίκευση της εφαρμογής μπορεί να επιτευχθεί με δυο τρόπους. Ο ένας είναι με την χρήση μιας φόρμας log-in, στην οποία ο χρήστης εισάγει το προσωπικό του username και password. Με την είσοδό του στην εφαρμογή, φορτώνονται αυτόματα οι προσωπικές του ρυθμίσεις, τις οποίες είχε καταχωρήσει κατά την εγγραφή του στο σύστημα. Ένας άλλος τρόπος είναι με την χρήση cookies από την πλευρά της εφαρμογής. Όταν χρησιμοποιεί ο χρήστης την εφαρμογή, αποθηκεύονται από την εφαρμογή, χωρίς να το γνωρίζει ο χρήστης, κάποιες πληροφορίες σχετικά με τις επιλογές που κάνει. Αυτές οι πληροφορίες αποθηκεύονται σε μια βάση της εφαρμογής. Με τον τρόπο αυτό την επόμενη φορά που ο χρήστης θα χρησιμοποιήσει την εφαρμογή, η εφαρμογή θα αναγνωρίσει τον χρήστη αυτόματα, χωρίς ο ίδιος να κάνει κάτι. 73

74 Tailoring Αρκετές ιστοσελίδες έχουν την ικανότητα να προβάλλουν διάφορες εκδοχές της αρχικής τους μορφής, ανάλογα με τα ενδιαφέροντα του χρήστη, τις συνήθειές του αλλά και τις απαιτήσεις του από την εφαρμογή. Οι συγκεκριμένες ιστοσελίδες προσαρμόζονται και παρουσιάζουν σε κάθε χρήστη διαφορετικό περιεχόμενο, βασισμένο σε πληροφορίες που έχουν συλλεχτεί από τις τελευταίες επισκέψεις του χρήστη στην εφαρμογή, αλλά και βασισμένες στο προφίλ που τυχόν έχει δημιουργήσει ο χρήστης στη συγκεκριμένη ιστοσελίδα. Με βάση τις διάφορες πληροφορίες που έχουν συλλεχθεί για τον χρήστη, η ιστοσελίδα προσαρμόζεται στα ενδιαφέροντα και τις ανάγκες του χρήστη, εμφανίζοντάς του προϊόντα ή υπηρεσίες που ταιριάζουν με το προφίλ του, ή ακόμη και προϊόντα ή υπηρεσίες που χρησιμοποίησαν πρόσφατα διάφοροι άλλοι χρήστες, οι οποίοι έχουν παρόμοιο προφίλ. Επιπλέον μερικές ιστοσελίδες προσαρμόζουν τις διάφορες τιμές των προϊόντων ή τον τρόπο πληρωμής, με βάση τα χρήματα που υπολογίζουν ότι μπορεί να ξοδέψει ένας πελάτης Communication Η επικοινωνία μπορεί να είναι είτε μονόδρομη (εφαρμογή προς χρήστη) είτε αμφίδρομη. Αυτή η επικοινωνία μπορεί να γίνει με τρεις τρόπους: Broadcast (γενική μετάδοση) : η συγκεκριμένη μορφή επικοινωνίας είναι μονόδρομη και δεν υπάρχει η δυνατότητα από την πλευρά του χρήστη να απαντήσει στην εφαρμογή. Τέτοιου είδους επικοινωνία είναι η αποστολή e- mail είτε σε όλους τους χρήστες που είναι εγγεγραμμένοι στο σύστημα, με διάφορες πληροφορίες σχετικά με νέα προϊόντα ή υπηρεσίες που παρέχονται 74

75 και διάφορες άλλες ανακοινώσεις, όπως παραδείγματος χάριν πληροφορίες σχετικά με κάποιο συνέδριο ή κάποια συνάντηση. Παράλληλα, η αποστολή mail μπορεί να γίνεται μόνο σε μια υποκατηγορία χρηστών, ανάλογα με τις πληροφορίες που παρέχονται στο mail, σε συνδυασμό με το προφίλ των χρηστών, με σκοπό να τους ενημερώσει σχετικά με κάποια νέα προϊόντα ή υπηρεσίες που τους αφορούν. Συνήθως τα ενημερωτικά mail αποστέλλονται με την έγκριση του χρήστη, ανά συγκεκριμένα χρονικά διαστήματα. Ένας άλλος τρόπος μονόδρομης επικοινωνίας είναι τα FAQs (Frequently Asked Questions), στις οποίες περιέχονται απαντήσεις σε απλές ερωτήσεις, και συνήθως αφορούν το είδος των προϊόντων και υπηρεσιών που παρέχονται από την εφαρμογή, καθώς επίσης και τον τρόπο λειτουργίας της. Interactive (Διαδραστική Επικοινωνία) : είναι μια αμφίδρομη μορφή επικοινωνίας. Ένα παράδειγμα τέτοιου είδους επικοινωνίας είναι η ανταλλαγή mail για την παραγγελία και την επικύρωσή της μεταξύ συστήματος και χρήστη. Παράλληλα αυτή η ανταλλαγή mail μπορεί να γίνεται ώστε να δοθούν λύσεις σε διάφορες απορίες-προβλήματα που έχουν οι χρήστες (customer service). Γενικά η επικοινωνία συστήματος προς χρήστη μπορεί να κατηγοριοποιηθεί σε επικοινωνία ένας προς έναν (όταν ο σύστημα επικοινωνεί με κάθε χρήστη ξεχωριστά) και ένας προς πολλούς (όταν το σύστημα επικοινωνεί ταυτόχρονα με πολλούς χρήστες, π.χ. μαζική αποστολή ενημερωτικών ). Κάθε μια από τις δυο κατηγορίες μπορεί να χωριστεί σε δυο υποκατηγορίες, με βάση την ικανότητα του χρήστη να επικοινωνεί και ο ίδιος με το σύστημα (αμφίδρομη επικοινωνία) ή όχι (μονόδρομη επικοινωνία). 75

76 3.2.6 Connection Ο όρος connection αναφέρεται στην δυνατότητα την οποία παρέχει μια εφαρμογή για απευθείας μετάβαση σε άλλα site ή εφαρμογές. Η διασύνδεση αυτή επιτυγχάνεται είτε με κείμενο, το οποίο είναι είτε υπογραμμισμένο είτε φωτεινότερο, είτε με εικόνες που λειτουργούν σαν σύνδεσμοι, είτε μέσω διαφόρων άλλων γραφικών. Μια παράμετρος που πρέπει να προσεχθεί είναι η τοποθεσία που θα ανοίξει η νέα σελίδα. Δηλαδή αν θα ανοιχτεί στην ίδια σελίδα που βρίσκεται και η αρχική σελίδα είτε αν θα ανοιχτεί σε ένα νέο παράθυρο. Υπάρχουν τέσσερις τρόποι σύνδεσης και ανοίγματος παραθύρου: 1. Outside Links : στην συγκεκριμένη περίπτωση η διασύνδεση οδηγεί σε ένα εντελώς νέο ιστοχώρο / παράθυρο. 2. Framed Links : αν χρησιμοποιηθεί ο συγκεκριμένος τρόπος σύνδεσης, τότε η νέα σελίδα ανοίγει σε ένα τμήμα της αρχικής σελίδας. Με αυτό τον τρόπο είναι ευκολότερη η μετάβαση στην αρχική σελίδα, αφού συνήθως παραμένει το μενού επιλογών από την αρχική, για γρηγορότερη επιστροφή και χρήση των επιλογών της αρχικής σελίδας. 3. Pop-Up Windows : όταν ο χρήστης πατήσει το link, τότε ανοίγει ένα νέο παράθυρο, το οποίο δεν έχει το ίδιο μέγεθος με την αρχική σελίδα, αλλά μικρότερο. Με αυτό τον τρόπο ο χρήστης συνεχίζει να βλέπει και την αρχική σελίδα. Η μέθοδος αυτή είναι ιδιαίτερα χρηστική για διαφημιστικούς σκοπούς, αφού ο χρήστης αφού δει την διαφήμιση, κάνει ένα απλό κλικ στην καινούργια σελίδα, η οποία κλείνει, και επιστρέφει στην αρχική. 76

77 4. Outsourced Context : στην συγκεκριμένη μέθοδο, η αρχική ιστοσελίδα έχει κάποια συγκεκριμένα πλαίσια μέσα στην σελίδα της, τα οποία χρησιμοποιούνται για διαφημιστικούς σκοπούς και οδηγούν σε άλλες σελίδες. Η διάφορα τώρα είναι πως τα πλαίσια αυτά και οι διαφημίσεις που προβάλλονται δεν διαχειρίζονται από την αρχική σελίδα, αλλά από την σελίδα, η διαφήμιση της οποίας προβάλλεται στο πλαίσιο της αρχικής. Το περιεχόμενο και οι τυχόν αλλαγές που γίνονται στις διαφημίσεις δεν πραγματοποιούνται από την αρχική, αλλά κατευθείαν από αυτόν που διαχειρίζεται την σελίδα, η οποία διαφημίζεται στην αρχική Commerce Η συγκεκριμένη ιδιότητα χαρακτηρίζει την δυνατότητα που δίνει η εφαρμογή για συναλλαγές οικονομικού περιεχομένου. Αυτό το χαρακτηριστικό είναι ιδιαίτερα χρήσιμο σε εφαρμογές που σχετίζονται με πώληση προϊόντων ή παροχή υπηρεσιών επί πληρωμή. Τα χαρακτηριστικά γνωρίσματα αυτής της ιδιότητας είναι τα ακόλουθα: Registration : η εγγραφή του χρήστη σε μια τέτοια εφαρμογή δίνει την δυνατότητα στο σύστημα να αποθηκεύει πληροφορίες σχετικά με τον τρόπο πληρωμής που συνήθως προτιμά ο χρήστης, την διεύθυνση του παραλήπτη, και πληροφορίες σχετικά με την πιστωτική του κάρτα. Shopping Cart : η δυνατότητα χρήσης ενός εικονικού καλαθιού αγοράς δίνει την δυνατότητα στον πελάτη να πραγματοποιήσει ταυτόχρονα αρκετές 77

78 αγορές, ενώ μπορεί να αποθηκεύσει τις επιλογές του, ώστε να τις δει την επόμενη φορά που θα εισέλθει στο σύστημα. Security : η εφαρμογή θα πρέπει να παρέχει κάποιες εγγυήσεις και δικλίδες ασφαλείας στον χρήστη ότι τα προσωπικά του στοιχεία και κυρίως τα στοιχεία της πιστωτικής του κάρτας, δεν θα μπορούν να προσπελαστούν από οποιοδήποτε. Αυτό γίνεται με την κρυπτογράφηση των πληροφοριών που ανταλλάσσονται, αλλά και με διάφορες άλλες τεχνολογίες αυθεντικοποίησης του χρήστη. Credit Card Approval : η δυνατότητα άμεσης αποδοχής πιστωτικών καρτών, ώστε να δίνεται η δυνατότητα στον χρήστη να αγοράζει προϊόντα άμεσα. Ο έλεγχος για την γνησιότητα της κάρτας θα πρέπει να γίνεται μέσω διαφόρων links σε διάφορα εξουσιοδοτημένα site. One-click shopping : η δυνατότητα προκαθορισμού των στοιχείων της πιστωτικής κάρτας και της διεύθυνσης παράδοσης, ώστε στην συνέχεια ο χρήστης να μπορεί να ψωνίζει προϊόντα κατευθείαν. Orders through affiliates : οι ιστοσελίδες με θυγατρικά προγράμματα θα πρέπει να είναι σε θέση να δέχονται και να κατοχυρώνουν τις παραγγελίες που γίνονται μέσω των θυγατρικών εταιριών. Configuration technology : αυτό βοηθάει τον χρήστη να τοποθετεί στο καλάθι αγορών του προϊόντα με διάφορους τρόπους, στοιχείο το οποίο δίνει την ευκαιρία για ανάλυση των επιδόσεων/ τιμής συναλλαγών. 78

79 Order tracking : οι χρήστες θα πρέπει να μπορούν ανά πάσα στιγμή να ελέγξουν σε πιο στάδιο βρίσκεται η παραγγελία τους. Delivery Options : θα πρέπει να μπορεί ο χρήστης να επιλέξει τον τρόπο με τον οποίο θα έρχεται η παραγγελία του, ενώ συνήθως όσο πιο γρήγορος είναι ο τρόπος παράδοσης, τόσο πιο πολύ στοιχίζει. 3.3 Προσαρμογή του 7C s στις κινητές συσκευές Η δημιουργία μιας εφαρμογής κινητού εμπορίου είναι μια αρκετά περίπλοκη διαδικασία, εξαιτίας των ιδιαίτερων χαρακτηριστικών των φορητών συσκευών, αλλά και των ειδικών συνθηκών, κάτω από τις οποίες χρησιμοποιούνται οι φορητές συσκευές. Η προσαρμογή του μοντέλου των 7C s, για την δημιουργία μιας εφαρμογής για φορητές συσκευές, είναι ένα αντικείμενο το οποίο έχει απασχολήσει αρκετά τους ερευνητές. Ιδιαίτερη βαρύτητα έχει δοθεί στον τρόπο σχεδίασης της διεπαφής της εφαρμογής, στον τρόπο παρουσίασης των δεδομένων και των πληροφοριών που παρέχει το σύστημα στον χρήστη, αλλά και πως θα γίνει εφικτό ο χρήστης να αλληλεπιδρά με την συσκευή και να βλέπει τα αποτελέσματα από τα διάφορα ερωτήματα που θέτει, ανεξάρτητα από τις συνθήκες που επικρατούν στο περιβάλλον που βρίσκεται. Στον παρακάτω πίνακα παρουσιάζονται συνοπτικά τα χαρακτηριστικά των 7C s για μια εφαρμογή e-commerce, και ο τρόπος που αυτά θα πρέπει να προσαρμοστούν στα 2M s [16]. 79

80 M Commerce 7Cs E Commerce Mobile Setting Mobile Device Constraints Για την υποστήριξη της περιορισμένης προσοχής του χρήστη Για την συμπλήρωση της προβληματικής προβολής πληροφοριών στην οθόνη Context Επίκεντρο Πως φορτώνεται Συνδετική δομή Διαίρεση σε (Γενικό πλαίσιο) ενδιαφέροντος ένας Ιστοχώρος Πως φαίνεται αισθητικά και πως λειτουργεί μεταξύ σελίδων, απλά αλλά αποτελεσματικά τμήματα και οργάνωση πληροφοριών σε ξεχωριστές σελίδες Εφαρμογή Χρώματα και Διάρθρωση Περίληψη και στην διεπαφή οπτικά (visual) μενού με πιο λέξεις κλειδιά, αντικείμενα Διάταξη σελίδας (δομή συνδέσεων, χωρισμός χαλαρό και επιφανειακό τρόπο ώστε να δίνεται το νόημα των τμημάτων τμημάτων, εργαλεία πλοήγησης) Απόδοση (ταχύτητα, αξιοπιστία, χρησιμότητα) 80

81 Content Επίκεντρο Τι παρουσιάζει ένας Η προσαρμογή Χρήση (Περιεχόμενο) ενδιαφέροντος Ιστοχώρος στον της ποσότητας multimedia mix, χρήστη Κείμενο, εικόνα, ήχος, βίντεο που παρουσιάζονται και του είδους των πληροφοριών, με βάση επιλογές για αξιοποίηση καναλιών ήχου και εικόνας του χρήστη Εφαρμογή (a) Offering mix Επιλογή Μετατροπή στην διεπαφή (b) appeal mix αξιοθεάτων με οπτικών (c) multimedia mix βάση την απόσταση από πληροφοριών σε ήχο (d) content type τον χρήστη Χρήση ηχητικών μηνυμάτων χωρίς φωνή Community Επίκεντρο Επικοινωνία χρήστη Διαδραστική Επιτάχυνση της ενδιαφέροντος με χρήστη επικοινωνία ανταλλαγής μεταξύ χρηστών διαδραστικών με κοινά πληροφοριών, ενδιαφέροντα ανεξαρτήτως συσκευών Εφαρμογή Interactive (chat, Σύνδεση σε SMS και γραφικά στην διεπαφή instant messaging) σελίδες, όπου που περιγράφουν Νon-interactive (σελίδες public member) υπάρχουν χρήστες με κοινά ενδιαφέροντα προϊόντα 81

82 Customization Επίκεντρο Η ικανότητα του Η προσαρμογή Φιλτράρισμα των ενδιαφέροντος Ιστοχώρου να προσαρμόζεται αυτόματα, ή να μπορεί να προσαρμοστεί από τον χρήστη της εφαρμογής βελτιώνεται με βάση το προφίλ του χρήστη πληροφοριών, ώστε στην μικρή οθόνη να προβάλλονται μόνο οι απαραίτητες πληροφορίες Εφαρμογή Εξατομίκευση (log- Επιλογή και Εξατομικευμένες στην διεπαφή in) προβολή πληροφορίες, Προσαρμογή βάση προηγούμενες προτιμήσεις χρήστη) (με τις του αξιοθεάτων με βάση την εγγύτητά τους με τον χρήστη, συνδυάζοντας χωρίς να απαιτείται log in, βασισμένες σε ήδη γνωστό προφίλ του την θέση του χρήστη χρήστη με τα προσωπικά του ενδιαφέροντα Communication Επίκεντρο Η επικοινωνία Μηνύματα Εναλλακτικοί ενδιαφέροντος μεταξύ site και των τύπου Broadcast, τρόποι για χρηστών του σχετικά με το διαδραστική περιβάλλον του επικοινωνία, ώστε χρήστη να μην απαιτείται γραφή κειμένου 82

83 Εφαρμογή (a) Broadcast Στοχευόμενη Απαντήσεις στην διεπαφή (b) Interactive (c) Hybrid διαφήμιση, ανάλογα και με το σημείο που χρήστη σε ερωτήματα με μορφή πολλαπλής βρίσκεται επιλογής ή με μορφή πολυμέσων Connection Επίκεντρο Επίσημες συνδέσεις Σύνδεσμοι, οι Μείωση των ενδιαφέροντος μεταξύ ιστοσελίδων οποίοι πιθανοτήτων ο παρουσιάζουν χρήστης να ιστοσελίδες που αισθάνεται σχετίζονται με το χαμένος συνεχώς εξαιτίας των εναλλασσόμενο συνδέσμων περιβάλλον του χρήστη Εφαρμογή Περιεχόμενο στην Προσαρμοσμένοι Δυνατότητα στην διεπαφή σελίδα από χάρτες, οι οποίοι μεταφοράς στην εξωτερικές πηγές, ποσοστό σελίδας με εξωτερικό περιεχόμενο, εμφανίζουν πληροφορίες σχετικά με κοντινά σημεία αρχική σελίδα με ένα κλικ. Commerce Επίκεντρο Εργαλεία αγορών Ασφαλής Συμπυκνωμένη (Εμπόριο) ενδιαφέροντος που υποστηρίζουν αγορές προϊόντων πληρωμή απαιτώντας την διαδικασία ελέγχου μικρότερη δυνατή προσοχή από τον χρήστη 83

84 Εφαρμογή στην διεπαφή Καλάθι αγορών, ασφάλεια, κατάλογος παραγγελιών και επιλογές μεταφοράς Αυθεντικοποίηση απευθείας από τις κινητές συσκευές Ολοκλήρωση διαδικασίας με το πάτημα ενός κουμπιού, έχοντας αποθηκευμένες διεύθυνση χρήστη, τρόπο πληρωμής, διαδικασία παράδοσης Οι περιορισμοί των φορητών συσκευών, όπως αυτοί περιγράφθηκαν στο προηγούμενο κεφάλαιο, έχουν άμεσο αντίκτυπο στην σχεδίαση της διεπαφής μιας εφαρμογής, και στον τρόπο παρουσίασης των πληροφοριών που αυτή περιέχει. Επιπρόσθετα, η κινητικότητα του χρήστη επηρεάζει το είδος των εφαρμογών που αναπτύσσονται για φορητές συσκευές, καθώς επίσης και το είδος των πληροφοριών που παρέχονται στον χρήστη μιας εφαρμογής. Εάν συνυπολογιστεί και το περιβάλλον, στο οποίο βρίσκεται και κινείται ο χρήστης, και τα εμπόδια που δημιουργεί στην παρουσίαση των δεδομένων από πλευράς συστήματος (θόρυβος, υπερβολικό ή ελάχιστο φως, αλληλεπίδραση με άλλους ανθρώπους), γίνεται αντιληπτό ότι η σχεδίαση μιας εύχρηστης εφαρμογής είναι ιδιαίτερα περίπλοκη διαδικασία. Οι εφαρμογές που αναπτύσσονται για τις κινητές συσκευές είναι κατά βάση location based εφαρμογές. Βέβαια υπάρχουν και εφαρμογές, όπως το m- Banking, οι οποίες, ανεξάρτητα από την θέση που βρίσκεται ο χρήστης, παρέχουν τις ίδιες πληροφορίες και υπηρεσίες στον χρήστη. Οι εφαρμογές όμως που είναι locationbased χαρακτηρίζονται ως context-aware. Στις context-aware εφαρμογές οι πληροφορίες που παρέχονται σχετίζονται με την θέση που βρίσκεται ο χρήστης και μπορούν να προσδιορίσουν την κατάσταση στην οποία βρίσκεται [17]. Οι διάφορες πληροφορίες που χαρακτηρίζουν την κατάσταση του χρήστη είναι η τοποθεσία στην οποία βρίσκεται (location), η 84

85 ταυτότητά του (identity), η χρονική στιγμή για την οποία επιθυμεί τις διάφορες πληροφορίες (time) και οι διάφορες δραστηριότητες που τον ενδιαφέρουν (activity). Γενικά οι context-aware εφαρμογές είναι εκείνες οι εφαρμογές οι οποίες αντιλαμβάνονται με κάποιο τρόπο το περιβάλλον στο οποίο βρίσκεται ο χρήστης, τις αλλαγές που συμβαίνουν σε αυτό και προσαρμόζουν τις λειτουργίες τους με βάση κάποιο γενικό πλαίσιο λειτουργιών, το οποίο είτε είναι προκαθορισμένο από τον σχεδιαστή του συστήματος, είτε το έχει ορίσει ο χρήστης του συστήματος (Fickas et al). Τα τέσσερα στοιχεία που αναφέρθηκαν προηγουμένως (location, identity, time, activity), χαρακτηρίζονται ως πρωταρχικά, γιατί με βάση αυτά μπορούμε να αντλήσουμε περισσότερες πληροφορίες σχετικά με τον ίδιο τον χρήστη αλλά και με τις συνθήκες που επικρατούν μέσα στο περιβάλλον στο οποίο κινείται. Παραδείγματος χάριν, αν γνωρίζουμε την ταυτότητα του χρήστη που χρησιμοποιεί σε μια δεδομένη χρονική στιγμή την εφαρμογή, τότε μπορούμε να βρούμε πληροφορίες όπως το του, η διεύθυνσή του κλπ. Γνωρίζοντας την τοποθεσία στην οποία βρίσκεται ο χρήστης, το σύστημα έχει την δυνατότητα να ενημερώσει τον χρήστη για διάφορα σημεία ενδιαφέροντος ή άλλους χρήστες, τα οποία βρίσκονται σε κοντινή απόσταση από αυτόν. Με αυτό τον τρόπο περιορίζεται αρκετά ο όγκος των πληροφοριών που του αποστέλλονται, ενώ και οι πληροφορίες που τελικά παίρνει ο χρήστης του είναι περισσότερο χρήσιμες. Όπως γίνεται κατανοητό, στις location-based εφαρμογές είναι απαραίτητο να γίνεται κάποιος έλεγχος της κατάστασης του χρήστη, ώστε οι πληροφορίες που αποστέλλονται να είναι χρήσιμες στον χρήστη. Στην συνέχεια θα αναφερθούν οι δυσκολίες που αντιμετωπίζει ο σχεδιαστής μιας εφαρμογής κινητού εμπορίου στην προσαρμογή του μοντέλου 7C s, και μερικοί τρόποι που έχουν προταθεί, ώστε να λυθούν κάποια από τα προβλήματα. Θα αναφερθούμε στα context, content, customization και commerce, διότι αυτά τα τέσσερα παρουσιάζουν ενδιαφέρον για τον τρόπο προσαρμογής τους στις φορητές 85

86 συσκευές. Αντίθετα τα υπόλοιπα τρία στοιχεία (community, communication και connection), ο τρόπος χρήσης τους είναι ίδιος με τις εφαρμογές e-commerce Context Η δημιουργία της διεπαφής μιας εφαρμογής κινητού εμπορίου είναι μια ιδιαίτερα περίπλοκη διαδικασία. Οι δυσκολίες που συναντώνται κατά την διάρκεια της σχεδίασης και υλοποίησης μιας εφαρμογής έγκειται στους διάφορους περιορισμούς που θέτονται τόσο από τις ίδιες τις συσκευές, όσο και από το περιβάλλον μέσα στο οποίο βρίσκεται ο χρήστης. Οι επιπλέον περιορισμοί που θέτονται από το περιβάλλον που βρίσκεται ο χρήστης, δημιουργούν επιπρόσθετες δυσκολίες στον σχεδιασμό μιας καλαίσθητης και λειτουργικής διεπαφής. Γενικά οι διάφοροι περιορισμοί που ο σχεδιαστής μιας εφαρμογής κινητού εμπορίου θα πρέπει να αντιμετωπίσει μπορούν να χωριστούν σε δυο κατηγορίες [18]: 1. στους περιορισμούς που θέτονται από τον χρήστη (user constraints) 2. σε εξωτερικούς περιορισμούς (external constraints) Οι user constraints μπορούν να χωριστούν σε τρεις κατηγορίες : χαρακτηριστικά χρήστη (user features) : παραδείγματος χάριν μειωμένη όραση ή ακινησία κατάσταση χρήστη (user state) : η κατάσταση στην οποία βρίσκεται την συγκεκριμένη χρονική στιγμή ο χρήστης, από συναισθηματική και νοητική κατάσταση, η οποία επηρεάζει την χρησιμοποίηση ή όχι κάποιων αντικειμένων αλληλεπίδρασης της διεπαφής 86

87 προτιμήσεις χρήστη (user preferences) : το κατά πόσο ο χρήστης είναι πρόθυμος να χρησιμοποιήσει κάποια αντικείμενα της διεπαφής. Οι external constraints μπορούν να διαιρεθούν στις εξής υποκατηγορίες : device constraints : περιορισμοί συσκευών Περιορισμοί περιβάλλοντος (environmental constraints) : οι συγκεκριμένοι περιορισμοί αναφέρονται στους περιορισμούς που θέτει το περιβάλλον μέσα στο οποίο χρησιμοποιείται η εφαρμογή. Ένα παράδειγμα είναι η χρήση τα κινητής συσκευής ενώ ο χρήστης βρίσκεται στην θέση του οδηγού, με συνέπεια να μην είναι σε θέση να έχει αποκλειστικά την προσοχή του στραμμένη στην κινητή συσκευή, είτε δεν είναι σε θέση να χρησιμοποιεί και τα δυο χέρια για την πλοήγηση στην εφαρμογή. Επιπλέον θα πρέπει να συνυπολογιστεί ο θόρυβος που έχει το περιβάλλον που βρίσκεται ο χρήστης, όπως επίσης και η φωτεινότητα του χώρου, στον οποίο κινείται ο χρήστης. Αλληλεπίδραση με άλλους ανθρώπους (social context) : η αλληλεπίδραση με διάφορους άλλους ανθρώπους, ενώ ταυτόχρονα χρησιμοποιεί την εφαρμογή, είναι ένας παράγοντας που πρέπει να ληφθεί σοβαρά υπόψιν. Όπως γίνεται αντιληπτό, εξαιτίας των περιορισμών που αναφέρθηκαν προηγουμένως, η δημιουργία μιας καλαίσθητης και εύχρηστης διεπαφής είναι μια ιδιαίτερα δύσκολη και περίπλοκη διαδικασία. Οι μικρές οθόνες των φορητών συσκευών δημιουργούν ένα πρόβλημα σχετικά με τον όγκο των πληροφοριών που θα προβληθούν στην οθόνη. Οι πληροφορίες που 87

88 θα παρέχει η διεπαφή να πρέπει να είναι σχετικά λίγες αλλά περιεκτικές, ώστε να εφαρμόζουν ακριβώς στο μέγεθος της οθόνης, ενώ παράλληλα θα πρέπει να ενημερώνουν επαρκώς και τον χρήστη. Ειδικά η μεταφορά ιστοσελίδων από τους επιτραπέζιους υπολογιστές στην οθόνη των φορητών συσκευών απαιτεί ιδιαίτερη προσπάθεια, ώστε ο όγκος των πληροφοριών να χωρέσει και να τοποθετηθεί με σωστό τρόπο στις μικρές οθόνες των κινητών συσκευών. Ο Buyukkokten et al. [19] πρότειναν μια μέθοδο σύνοψης μιας ιστοσελίδας HTML, ώστε να μπορέσει να προβληθεί στην οθόνη ενός PDA. Με βάση τον τρόπο που προτείνανε, η σελίδα χωρίζεται σε τμήματα τα οποία ονομάζονται Semantic Text Units (STU). Η τμηματοποίηση γίνεται ανάλογα με το νόημα κάθε παραγράφου, ώστε κάθε τμήμα να είναι και μια διαφορετική εννοιολογική παράγραφος. Στην οθόνη του χρήστη εμφανίζονται μόνο η πρώτη πρόταση κάθε τμήματος. Αν ένα τμήμα έχει περισσότερες από μια προτάσεις, τότε δίπλα στην πρόταση υπάρχει ένας μαύρος κύκλος. Αν ο χρήστης δει ότι τον ενδιαφέρει το θέμα στο οποίο αναφέρεται ένα STU, τότε το επιλέγει και αμέσως εμφανίζεται ένα μεγαλύτερο κομμάτι του STU ( οι τρεις πρώτες σειρές). Όταν ο κύκλος γίνει άσπρος σημαίνει ότι έχει εμφανιστεί όλο το STU. Αν δίπλα από το STU υπάρχει ένας σταυρός, τότε μέσα στο STU υπάρχει εμφωλευμένο ένα ή περισσότερα STU. Ο τρόπος ανοίγματος των STU που περιγράφθηκε προηγουμένως ήταν ο ένας από τους πέντε που προτείνανε. Ένας δεύτερος τρόπος ήτανε να προβάλλουν κατευθείαν όλες τις πληροφορίες ενός STU, ο τρίτος να χρησιμοποιηθεί μια λέξη κλειδί για επικεφαλίδα του STU, και αν ο χρήστης την επιλέξει να δει αρχικά τις τρεις πρώτες σειρές του STU και στην συνέχεια να το δει ολόκληρο, στο τέταρτο τρόπο αρχικά υπάρχει μια μικρή περίληψη του STU, και αν επιλεγεί προβάλλονται όλες οι γραμμές του STU και ο πέμπτος είναι ένας συνδυασμός της λέξης κλειδί και της περίληψης. Αρχικά εμφανίζεται η λέξη κλειδί, στην συνέχεια μια μικρή περίληψη και στην συνέχεια όλο το STU. Ο τελευταίος τρόπος θεωρήθηκε από τους συμμετέχοντες στην έρευνα που πραγματοποιήθηκε ως ο καλύτερος τρόπος παρουσίασης των δεδομένων. 88

89 Ένα άλλο σημαντικό πρόβλημα που θα πρέπει να αντιμετωπίσει ο σχεδιαστής της εφαρμογής είναι η κινητικότητα του χρήστη και η αλληλεπίδρασή του με το περιβάλλον του. Και στις δυο περιπτώσεις, συνήθως η προσοχή του δεν είναι στραμμένη στην οθόνη της φορητής συσκευής, ενώ παράλληλα χρησιμοποιεί και την συσκευή του με το ένα χέρι. Η διεπαφή λοιπόν θα πρέπει να είναι σχεδιασμένη κατά τέτοιο τρόπο ώστε να μπορεί ο χρήστης να χρησιμοποιήσει την εφαρμογή μόνο με το ένα του χέρι, και χωρίς να είναι αφοσιωμένος απόλυτα στην κινητή συσκευή. Μια πρώτη προσπάθεια δημιουργίας εφαρμογής η οποία απαιτεί ελάχιστη ή και καθόλου προσοχή από τον χρήστη έγινε από τους Pascoe et al [20], οι οποίοι δημιούργησαν μια εφαρμογή για ερευνητές στην Αφρική, με την οποία οι ερευνητές παρατηρούσαν και κατέγραφαν την ποσότητα φύλλων που κατανάλωναν οι καμηλοπαρδάλεις. Η συγκεκριμένη εφαρμογή χρησιμοποιούσε τα δυο υπάρχοντα κουμπιά μιας συσκευής PDA, με τα οποία ο χρήστης μπορούσε να αυξήσει και να μειώσει τον αριθμό των μπουκιών που έτρωγαν οι καμηλοπαρδάλεις. Η χρήση της εφαρμογής γινόταν εύκολα, μόνο με το ένα χέρι και χωρίς να χρειάζεται ο χρήστης να κοιτάζει την οθόνη της κινητής συσκευής. Ενώ τα προηγούμενα χρόνια οι φορητές συσκευές είχανε μόνο τα κουμπιά της συσκευής, και με βάση αυτά έπρεπε να δημιουργηθεί μια εφαρμογή, στην σημερινή εποχή οι περισσότερες φορητές συσκευές είναι touch-screen. Αυτό δίνει την δυνατότητα στους σχεδιαστές των εφαρμογών να τοποθετήσουν και διάφορα κουμπιά μέσα στην εφαρμογή, τα οποία θα εμφανίζονται στην οθόνη, με δυνατότητα αλληλεπίδρασης με τον χρήστη. Αυτή η ευκολία όμως δημιουργεί καινούργιους προβληματισμούς, σχετικά με το σημείο μέσα στην εφαρμογή, στο οποίο θα τοποθετηθούν τα κουμπιά, ώστε να είναι ευκολότερο στον χρήστη να αλληλεπιδράσει με αυτά, ενώ ο χρήστης βρίσκεται σε κίνηση και χρησιμοποιεί την συσκευή με το ένα του χέρι [21]. Με βάση την συγκεκριμένη έρευνα, δημιουργείται ένα δίλημμα σχετικά με την τοποθεσία που θα πρέπει να τοποθετηθούν τα κουμπιά. Ο λόγος είναι ότι ενώ οι συμμετέχοντες στην έρευνα δήλωσαν πως είναι ευκολότερο για τους ίδιους ο στόχος που θα πρέπει να πετύχουν να βρίσκεται στην μέση της οθόνης, από ότι 89

90 όταν βρίσκεται στην άκρη, η ακρίβεια με την οποία πετύχαιναν το στόχο στην δεύτερη περίπτωση ήτανε κατά πολύ μεγαλύτερη. Αντιθέτως όμως, όταν ο στόχος βρισκότανε στο κέντρο, οι συμμετέχοντες ολοκλήρωναν την διαδικασία που έπρεπε σε μικρότερο χρόνο από ότι όταν αυτά βρισκότανε στην άκρη της οθόνης Content Όπως αναφέρθηκε και προηγουμένως, το content αναφέρεται στις πληροφορίες που παρέχει το σύστημα στον χρήστη, με βάση τα ερωτήματα που αυτός θέτει. Όπως και στο context, έτσι και στο content θα πρέπει οι πληροφορίες που αποστέλλονται στον χρήστη, αλλά και ο τρόπος με τον οποίο παρουσιάζονται, να προσαρμοστούν στους φυσικούς περιορισμούς των φορητών συσκευών και στους περιορισμούς του περιβάλλοντος στο οποίο κινείται ο χρήστης. Παράλληλα η κινητικότητα του χρήστη, και κατ επέκταση και των φορητών συσκευών, διαφοροποιεί συνεχώς τις πληροφορίες που ενδιαφέρουν τον χρήστη. Όταν ο χρήστης χρησιμοποιεί μια εφαρμογή location-based, τον ενδιαφέρει να παραλαμβάνει πληροφορίες που σχετίζονται με την τοποθεσία που βρίσκεται εκείνη την στιγμή ή να βλέπει διάφορα σημεία ενδιαφέροντος που βρίσκονται σε κοντινή απόσταση, όπως τράπεζες, μουσεία, στάσεις μετρό. Υπάρχουν τρεις διαφορετικοί τρόποι παρουσίασης των αποτελεσμάτων [22]: Αλφαβητικά Με βάση την απόσταση του αξιοθέατου από τον χρήστη Συνδυασμός των δυο προηγούμενων μεθόδων Εάν τα αποτελέσματα εμφανίζονται αλφαβητικά, τότε θα πρέπει τα αξιοθέατα που βρίσκονται σε κοντινότερη απόσταση από τον χρήστη εμφανίζονται με διαφορετικό τρόπο από τα υπόλοιπα. Για παράδειγμα όσα είναι πιο κοντά στον 90

91 χρήστη μπορεί να είναι με διαφορετικό χρώμα ή να παρουσιάζονται με πιο έντονη γραμματοσειρά. Με αυτό τον τρόπο ο χρήστης αντιλαμβάνεται ποια βρίσκονται πιο κοντά του, και μπορεί να αξιολογήσει και να χρησιμοποιήσει καλύτερα τις πληροφορίες. Ο τρόπος παρουσίασης θα πρέπει να έχει επιλεχθεί από την αρχή από τον χρήστη, είτε τα δεδομένα να παρουσιάζονται μόνο με έναν τρόπο, τον οποίο θα έχει ρυθμίσει από την αρχή ο προγραμματιστής του συστήματος. Ο λόγος είναι ότι η μικρή υπολογιστική ισχύς των επεξεργαστών των φορητών συσκευών είναι ανασταλτικός παράγοντας στο να δίνεται η δυνατότητα στον χρήστη να αλλάζει κάθε φορά τον τρόπο εμφάνισης των αποτελεσμάτων, αφού αυτό θα είχε ως αποτέλεσμα ιδιαίτερο υπολογιστικό κόστος, και η εμφάνιση των αποτελεσμάτων με διαφορετική ταξινόμηση θα γινόταν με μεγάλη καθυστέρηση. Το γεγονός ότι ο χρήστης είναι πιθανό να χρησιμοποιήσει την εφαρμογή ενώ βρίσκεται σε κίνηση, σε συνδυασμό με τις συνθήκες κάτω από τις οποίες θα την χρησιμοποιήσει, όσον αφορά το περιβάλλον μέσα στο οποίο βρίσκεται, δημιουργεί ένα επιπρόσθετο πρόβλημα στον τρόπο παρουσίασης των δεδομένων. Όταν ο χρήστης βρίσκεται εν κινήσει είτε συνομιλεί με άλλους ανθρώπους, η κινητή του συσκευή δεν είναι το κέντρο της προσοχής του. Παράλληλα το μέρος που βρίσκεται μπορεί να μην έχει τον κατάλληλο φωτισμό. Αυτό έχει σαν αποτέλεσμα να είναι δύσκολο να δει τις πληροφορίες που αποστέλλονται από το σύστημα, όταν αυτές είναι στην μορφή κειμένου. Ο Kristoffersen [23] πρότεινε μια μέθοδο, με βάση την οποία ο χρήστης δεν χρειάζεται να προσέχει την οθόνη του κινητού του, η οποία ονομάζεται MOTILE. Οι τρεις βασικές αρχές του MOTILE είναι : α) μικρή ή καθόλου οπτική προσοχή στην οθόνη β) συγκροτημένη εισαγωγή δεδομένων με το χέρι γ) χρήση ήχου για feedback. 91

92 Η επιλογή των ηχητικών εφφέ που θα χρησιμοποιηθούν από μια εφαρμογή για την παρουσίαση των αποτελεσμάτων θα πρέπει να γίνει με τέτοιο τρόπο ώστε όταν ακούγεται ο ήχος, ο χρήστης να αντιλαμβάνεται ότι πρόκειται για ειδοποίηση της εφαρμογής. Η χρήση ήχων που μοιάζουν με ήχους τηλεφώνου μπορεί να μπερδέψει τον χρήστη και να μην αντιληφθεί ότι πρόκειται για ειδοποίηση του συστήματος. Επιπλέον η χρήση ηχητικών με λόγια καθυστερεί την ειδοποίηση. Ο Brewster [24] πρότεινε την χρήση ηχητικών μηνυμάτων, χωρίς λόγια, τα οποία είναι γρηγορότερα στην μετάδοση, ώστε ο χρήστης να ειδοποιείται από το σύστημα. Ένα παράδειγμα παρουσίασης αποτελεσμάτων με ήχο είναι το AudioGPS [25]. Το AudioGPS παράγει ηχητικά μηνύματα, χωρίς λόγια, για να ενημερώσει τον χρήστη τον χρήστη για την θέση που βρίσκεται το σημείο που θέλει να κατευθυνθεί, αλλά για το αν βρίσκεται σχετικά κοντά ή μακριά από το σημείο. Όταν ο χρήστης κινείται κατά μήκος μια διαδρομής, παράγεται διαφορετικός ήχος εάν το σημείο στο οποίο θέλει να κατευθυνθεί βρίσκεται στο ημικύκλιο μπροστά του και διαφορετικός αν βρίσκεται στο ημικύκλιο που σχηματίζεται από πίσω του. Παρουσιάζεται βέβαια ένα μικρό πρόβλημα όταν ο χρήστης είναι ακίνητος. Σε αυτή την περίπτωση ο ήχος παράγεται με βάση την κίνηση που έκανε προηγουμένως ο χρήστης. Για την ενημέρωση του χρήστη σχετικά με την απόσταση που τον χωρίζει από το σημείο που θέλει να κατευθυνθεί, χρησιμοποιούνται ηχητικά μηνύματα, τα οποία παράγονται σε αργό τέμπο όταν ο χρήστης βρίσκεται σχετικά μακριά από το σημείο που επιθυμεί να φτάσει, ενώ το τέμπο αυξάνει όσο ο χρήστης πλησιάζει το σημείο που έχει θέσει ως το τέρμα της διαδρομής του. 92

93 3.3.3 Commerce Οι εφαρμογές κινητού εμπορίου, και κυρίως αυτές που σχετίζονται με on-line συναλλαγές οικονομικού περιεχομένου, έχουν να αντιμετωπίζουν ένα ακόμη πρόβλημα [26]. Το πρόβλημα τις ασφάλειας στις συναλλαγές, το οποίο απασχολεί ιδιαίτερα του χρήστες, από την στιγμή που θα πρέπει να χρησιμοποιήσουν αριθμούς πιστωτικών καρτών και άλλα ευαίσθητα προσωπικά δεδομένα. Παρόλο που οι εφαρμογές κινητού εμπορίου είναι λιγότερο ευπαθείς σε ιούς και επιθέσεις, αυτό δεν σημαίνει αυτόματα ότι είναι και ασφαλέστερες από τις αντίστοιχες εφαρμογές e- Commerce [27]. Αρκετές από τις μεθόδους που χρησιμοποιούνται για την ασφάλεια των συναλλαγών στις e-commerce, μπορούν να χρησιμοποιηθούν και στις m- Commerce, από την στιγμή που αυτές οι συναλλαγές τελικά καταλήγουν σε ενσύρματο δίκτυο. Η ασφάλεια στις συναλλαγές και η διατήρηση του απορρήτου των προσωπικών τους στοιχείων, είναι δυο παράμετροι που απασχολούν ιδιαίτερα τους χρήστες [28]. Οι Luarn και Lin προσπάθησαν να αξιολογήσουν τους λόγους που οι εφαρμογές m-banking δεν έχουν κατορθώσει να υιοθετηθούν, σε μεγάλο βαθμό, από τους χρήστες. Χρησιμοποίησαν το ΤΑΜ, το οποίο προσάρμοσαν στην έρευνα τους, προσθέτοντας την μεταβλητή perceived credibility, η οποία σχετίζεται με την ασφάλεια και το απόρρητο των συναλλαγών του χρήστη. Με βάση τα αποτέλεσμα της έρευνάς τους, αποδείχθηκε ότι αυτό που ενδιέφερε περισσότερο τους χρήστες ήτανε η αίσθηση της ασφάλειας και του απορρήτου των συναλλαγών τους και των στοιχείων τους [29]. Όπως γίνεται αντιληπτό και από την έρευνα των Luarn και Lin, η υιοθέτηση μιας εφαρμογής από τους χρήστες, προϋποθέτει οι χρήστες να νιώθουν ασφαλείς όταν την χρησιμοποιούν, ιδιαίτερα εάν θα πρέπει να δώσουν ευαίσθητα προσωπικά τους δεδομένα. Ο σχεδιαστής μιας εφαρμογής δεν μπορεί να κάνει αρκετά πράγματα 93

94 σχετικά με την ασφάλεια μιας εφαρμογής, από την στιγμή που είναι κυρίως θέμα της δικτυακής υποδομής Customization Η δυνατότητα εξατομίκευσης της εφαρμογής είναι ένας από τους βασικότερους λόγους που επηρεάζουν την απόφαση του χρήστη για υιοθέτηση ή όχι της εφαρμογής. Η παροχή ανούσιων και αχρείαστων πληροφοριών στους χρήστες, τους προκαλεί ένα αίσθημα δυσφορίας και είναι πιθανό να τους αποτρέψει από την περαιτέρω χρήση της εφαρμογής. Ο λόγος είναι πως οι μικρές οθόνες, στις οποίες προβάλλεται ένας πολύ μικρός αριθμός πληροφοριών, η μικρή υπολογιστική δύναμη των επεξεργαστών των και το μικρό bandwidth του δικτύου, έχει ως αποτέλεσμα μεγάλη καθυστέρηση στην εύρεση των πληροφοριών που πραγματικά ενδιαφέρουν τον χρήστη μέσα στον μεγάλο όγκο πληροφοριών που του παρέχονται [30]. Η υιοθέτηση λοιπόν της εφαρμογής βασίζεται κυρίως στην ικανότητα του συστήματος να προσφέρει στον χρήστη ακριβείς πληροφορίες, που να απαντούν ακριβώς στο ερώτημα που έθεσε προς το σύστημα, σχετικά σε μικρό χρόνο και οι οποίες θα αφορούν την περιοχή στην οποία κινείται. Η εξατομίκευση μιας εφαρμογής είναι ιδιαίτερα χρήσιμη και για τους καταναλωτές-χρήστες της εφαρμογής, αλλά και για διάφορες εταιρίες. Από την οπτική γωνία των καταναλωτών, μια εξατομικευμένη εφαρμογή τους προσφέρει υπηρεσίες, πληροφορίες και προϊόντα, τα οποία τους ενδιαφέρουν. Αντίθετα, από την οπτική των εταιριών, τέτοιου είδους εφαρμογές τους δίνουν την δυνατότητα να εντοπίσουν πιθανούς πελάτες, και να τους ενημερώσουν με για τα προϊόντα/ υπηρεσίες που προσφέρουν, ώστε τελικά να τους κερδίσουν [31]. 94

95 Οι χρήστες μπορούν να προσαρμόσουν την εφαρμογή στις επιθυμίες και στα ενδιαφέροντά τους την πρώτη φορά που θα χρησιμοποιήσουν το σύστημα. Με αυτό τον τρόπο τις επόμενες φορές που θα χρησιμοποιήσουν την εφαρμογή, οι πληροφορίες που θα εμφανιστούν στην οθόνη θα σχετίζονται με τις επιλογές που θα έχουν κάνει. Σε μια εξατομικευμένη location-based εφαρμογή, ο χρήστης έχει την ευκαιρία να εντοπίσει άμεσα και γρήγορα σημεία που τον ενδιαφέρουν και τα οποία βρίσκονται σε κοντινό σημείο από την τρέχουσα θέση του. Ο εντοπισμός της θέσης του γίνεται, με την βοήθεια της τεχνολογίας GPS, ενώ η επιλογή των αξιοθεάτων που θα προβληθούν βασίζεται στις ρυθμίσεις που έχει κάνει ο χρήστης. Αν εξετάσουμε την εξατομίκευση από την οπτική γωνία των εταιριών, η συγκεκριμένη δυνατότητα των εφαρμογών κινητού εμπορίου, και κυρίως των location-based εφαρμογών, τους δίνει την δυνατότητα να διαφημιστούν στους χρήστες- πιθανούς πελάτες, στέλνοντας ενημερωτικά SMS, σε όσους βρίσκονται σε κοντινή απόσταση από το κατάστημά τους. Με αυτό τον τρόπο είναι πολύ πιθανόν ο χρήστης που θα λάβει το SMS, να περάσει και από το κατάστημα, ώστε να δει και από κοντά τα προϊόντα, για τα οποία έλαβε το ενημερωτικό SMS. Ο τομέας που οι ερευνητές έχουν δώσει ιδιαίτερη βαρύτητα είναι η αυτόματη προσαρμογή της εφαρμογής στον χρήστη. Ο στόχος είναι να εντοπιστούν τα ενδιαφέροντα και οι προτιμήσεις του κάθε χρήστη ξεχωριστά, ώστε η εφαρμογή να ενημερώνει τον χρήστη σχετικά με προϊόντα και υπηρεσίες που τον ενδιαφέρουν. Η γνώση σχετικά με τον χρήστη χρησιμοποιείται κυρίως για λόγους marketing και αποστολής ενημερωτικών και διαφημιστικών μηνυμάτων προς τον χρήστη. Με βάση τον Zhang [32], για την εξατομίκευση της εφαρμογής απαιτούνται τα στοιχεία του χρήστη (user ID), πληροφορίες σχετικά με το παρελθόν του και τις διάφορες επιλογές που έκανε πρωτύτερα, γνώση σχετικά με τα ενδιαφέροντά του και τις προτιμήσεις του, καθώς επίσης και πληροφορίες σχετικά με την συσκευή που χρησιμοποιεί. Ένα βασικό πλεονέκτημα που έχουν οι φορητές συσκευές, είναι ότι η ταυτότητα του χρήστη είναι γνωστή εξαρχής, αφού η αναγνώριση του χρήστη μπορεί να γίνει μέσω των στοιχείων της κάρτας SIM, που φέρουν οι συγκεκριμένες 95

96 συσκευές. Εάν συνυπολογιστεί και το γεγονός ότι οι χρήστες σπάνια δίνουν σε τρίτους την συσκευή τους, τότε η ταυτοποίηση του χρήστη μπορεί να γίνει εύκολα. Εκτός από τα στοιχεία που αναφέρει ο Zhang, για να γίνει σωστή προσαρμογή μιας εφαρμογής στις απαιτήσεις και τις ανάγκες του χρήστη και ο χρήστης να αποδεχθεί και να εξετάσει το μήνυμα που θα του έρθει, χρειάζεται γνώση και σχετικά με την ηλικία του χρήστη, το φύλο του, την οικονομική και μορφωτική του κατάσταση [33]. Στοιχείο το οποίο επιβεβαιώνεται και από την έρευνα που πραγματοποίησαν οι Brackett and Carr [34]. Όπως αναφέρθηκε και προηγουμένως, οι location-based εφαρμογές χαρακτηρίζονται και ως context-aware. Αυτό σημαίνει ότι μπορούμε να αντλήσουμε πληροφορίες σχετικά με την ώρα, τον καιρό και τις διάφορες δραστηριότητες του χρήστη, συν την τοποθεσία που βρίσκεται. Αυτές οι επιπλέον πληροφορίες είναι ιδιαίτερα χρήσιμες για την παροχή σωστών πληροφοριών, και είναι ένα πλεονέκτημα των φορητών συσκευών σε σχέση με τους επιτραπέζιους υπολογιστές [35]. Για παράδειγμα έστω ότι ένας χρήστης βρίσκεται σε μια άγνωστη για αυτόν τοποθεσία και θέλει να βρει ένα εστιατόριο για να γευματίσει. Γνωρίζοντας το σύστημα την ώρα, μπορεί να ενημερώσει τον χρήστη για τα εστιατόρια τα οποία την συγκεκριμένη χρονική στιγμή είναι ανοικτά. 96

97 4 Περιγραφή Υλοποίηση Στην παρούσα διπλωματική έγινε μια προσπάθεια να δημιουργηθεί μια location-based εφαρμογή, η οποία θα εντοπίζει την τρέχουσα θέση του χρήστη και θα είναι σε θέση να παρέχει τις εξής πληροφορίες στον χρήστη : Απεικόνιση σε χάρτη της τρέχουσας θέσης του χρήστη Εύρεση και κίνηση πάνω σε μια διαδρομή, την οποία θα ορίζει ο χρήστης. Δυνατότητα προβολής διαφόρων προσωπικών αξιοθεάτων του χρήστη (όπως είναι το σπίτι του, το γραφείο του) τόσο κατά μήκος της διαδρομής, όσο και όταν προβάλλεται μόνο η θέση του. 97

98 Δυνατότητα εύρεσης αξιοθεάτων γενικών κατηγοριών (παραδείγματος χάριν μουσεία, σταθμοί μετρό και νοσοκομεία), τα οποία μπορεί να δει ο χρήστης. Επεξεργασία προσωπικών του αξιοθεάτων ( πρόσθεση καινούργιων, εμφάνιση στοιχείων των υπαρχόντων αξιοθεάτων) Επεξεργασία κατηγοριών γενικών αξιοθεάτων (αλλαγή επιλογών) Όπως γίνεται αντιληπτό, πρόκειται για μια εξατομικευμένη εφαρμογή, αφού στον κάθε χρήστης θα προβάλλονται μόνο τα δεδομένα που συνδέονται με την ταυτότητα του. Όπως αναφέρθηκε και στο κεφάλαιο 3, η εξατομίκευση των υπηρεσιών γίνεται με την χρήση των πληροφοριών από την κάρτα SIM της συσκευής. Επειδή στην συγκεκριμένη περίπτωση δεν υπάρχει κάρτα SIM, για να εισέλθει ο χρήστης στο σύστημα θα πρέπει να δώσει κάποιους προσωπικούς κωδικούς. Θα πρέπει να υπάρχει δηλαδή μια φόρμα, στην οποία ο χρήστης θα εισάγει τα προσωπικά του στοιχεία, ενώ παράλληλα θα πρέπει να υπάρχει και μια επιπλέον φόρμα, στην οποία θα μπορεί κάποιος που είναι νέος χρήστης να δημιουργήσει έναν λογαριασμό. Αυτό έχει ως αποτέλεσμα να υπάρχει μια βάση, στην φορητή συσκευή, στην οποία θα υπάρχουν τα δεδομένα του χρήστη. Η ύπαρξη της βάσης στην συσκευή δημιουργεί κάποια επιπλέον προβλήματα. Το ένα έχει να κάνει με την χωρητικότητα των συσκευών, το οποίο επηρεάζει και το μέγεθος της βάσης. Επειδή οι βάσεις δεν μπορεί να είναι ιδιαίτερα μεγάλες, αυτό έχει ως αποτέλεσμα να μην μπορούμε να αποθηκεύσουμε δεδομένα πολλών χρηστών στην ίδια συσκευή. Δηλαδή δεν είναι εφικτό από την ίδια συσκευή να συνδέονται πολλοί διαφορετικοί χρήστες, και οι προσωπικές τους ρυθμίσεις (κωδικοί πρόσβασης και αξιοθέατα) να παραμένουν αποθηκευμένες στην συσκευή. 98

99 Το άλλο πρόβλημα έχει να κάνει με την δυνατότητα του χρήστη να συνδέεται στο σύστημα από διαφορετικές συσκευές. Όπως γίνεται αντιληπτό, θα πρέπει σε κάθε συσκευή να δημιουργεί από την αρχή τον λογαριασμό του, και στην συνέχεια να ρυθμίζει τις παραμέτρους που θέλει. Κάτι το οποίο θα είχε ως αποτέλεσμα την δυσφορία του χρήστη, και την μην περαιτέρω επιθυμία για χρήση της συσκευής. Για αυτούς τους λόγους, θα πρέπει να υπάρχει μια βάση σε κάποιον server, στον οποίο θα συνδέεται η συσκευή, και θα ζητάει και θα δέχεται τα δεδομένα που θέλει κάθε φορά. Αυτή η διαδικασία ονομάζεται merge replication, και θα αναλυθεί στην συνέχεια. Στις location-based εφαρμογές όλες τους οι λειτουργίες γίνονται με βάση την τρέχουσα θέση του χρήστη, αλλά και με διάφορες άλλες πληροφορίες σχετικά με την γενικότερη κατάσταση του χρήστη, όπως είναι η ώρα, ο καιρός κλπ, και αυτό γιατί όπως είδαμε όλες οι location-based εφαρμογές είναι context-aware. Η εύρεση της θέσης του χρήστη γίνεται κυρίως με την τεχνολογία A-GPS. Επειδή η συγκεκριμένη εφαρμογή δημιουργήθηκε και έτρεξε τοπικά, η εύρεση θέσης και η κίνηση σε μια διαδρομή γίνεται με προσομοίωση. Δηλαδή πραγματοποιείται μια εικονική κίνηση του χρήστη και η τρέχουσα θέση μεταβάλλεται μέσα από την εφαρμογή. Η εύρεση της εικονικής τρέχουσας θέσης του χρήστη γίνεται μέσα από το πρόγραμμα. Με βάση τα προηγούμενα, το γενικό σχεδιάγραμμα της παρούσας εργασίας είναι το ακόλουθο. 99

100 Αρχική φόρμα Δημιουργία νέου λογαριασμού Είσοδος Χρήστη Επιλογές Χρήστη Εύρεση Τρέχουσας Θέσης Εύρεση Διαδρομής Προσωπικά Αξιοθέατα Γενικά Αξιοθέατα 100

101 Όπως αναφέρθηκε και προηγουμένως, για να λειτουργήσει σωστά η εφαρμογή, θα πρέπει να υπάρχει κινητή βάση αλλά και βάση σε ένα server, οι οποίες θα ανταλλάσουν δεδομένα. Με βάση τα προηγούμενα, η εφαρμογή αποτελείται από τρεις ξεχωριστές μονάδες, οι οποίες αλληλεπιδρούν μεταξύ τους : 1. Την διεπαφή της εφαρμογής. 2. Τις κινητές βάσεις, που υπάρχουν στην συσκευή, και στο τέλος κάθε πλοήγησης διαγράφονται τα δεδομένα της. 3. Τις βάσεις που βρίσκονται σε server, και οι οποίες έχουν αποθηκευμένα όλα τα δεδομένα όλων των χρηστών, και αποστέλλουν στις κινητές βάσεις τα κατάλληλα δεδομένα, με βάση τα στοιχεία του χρήστη. Πριν γίνει μια αναλυτική περιγραφή του κώδικα της εφαρμογής, θα γίνει μια σχετικά σύντομη αναφορά στα προγράμματα που χρησιμοποιήθηκαν για την υλοποίηση της εφαρμογής. Αυτά τα προγράμματα είναι τα εξής : 1. Microsoft Visual Studio.NET 2005, με το οποίο σχεδιάστηκε η διεπαφή 2. Microsoft SQL Server 2005, για την δημιουργία των βάσεων και την ρύθμιση της ανταλλαγής των δεδομένων μεταξύ τους 3. MapPoint Web Service, για την αναζήτηση των διευθύνσεων, αξιοθεάτων, διαδρομών, και την δημιουργία των αντίστοιχων χαρτών. 101

102 4.1 ΕΡΓΑΛΕΙΑ ΥΛΟΠΟΙΗΣΗΣ Microsoft Visual Studio.NET 2005 Το Visual Studio.NET της Microsoft είναι ένα πλήρες προγραμματιστικό εργαλείο, με το οποίο μπορεί κανείς να δημιουργήσει εφαρμογές για Windows, ιστοσελίδες, εφαρμογές για το Διαδίκτυο (web applications), ενώ μπορεί να δημιουργήσει εφαρμογές και για Pocket PC. Είναι η πρώτη πλατφόρμα, η οποία σχεδιάστηκε με βάση το Διαδίκτυο, και όχι κάποιο λειτουργικό πρόγραμμα, όπως συνέβαινε παλαιότερα (είτε για Windows είτε για Linux). Το Visual Studio.NET οποίο παρέχει ένα ολοκληρωμένο περιβάλλον ανάπτυξης (Integrated Development Environment IDE) για όλες τις γλώσσες.net της Microsoft. Αυτό σημαίνει ότι σε όποια γλώσσα και αν προγραμματίσει κάποιος μέσω του VS.NET (Visual Basic, C++, C# οι κυριότερες) θα μοιράζονται το ίδιο IDE, όπως και τη δυνατότητα να πραγματοποιούν αποσφαλμάτωση και χειρισμό εξαιρέσεων για όλες τις γλώσσες στο ίδιο περιβάλλον. Το Visual Studio διατίθεται επίσης με τη Jscript.NET και τις γλώσσες οι οποίες έχουν γραφτεί ή μεταφερθεί στην πλατφόρμα.net και εκμεταλλεύονται την ισχύ του ολοκληρωμένου περιβάλλοντος ανάπτυξης του Visual Studio, χρησιμοποιώντας μια εξαιρετικά ευέλικτη αρχιτεκτονική plug-ins που τους προσφέρει. Το κυριότερο χαρακτηριστικό του Visual Studio είναι το.net Framework. Το.ΝET Framework είναι μια προγραμματιστική υποδομή, η οποία χρησιμοποιείται για την σχεδίαση, την ανάπτυξη και την εκτέλεση εφαρμογών και υπηρεσιών, οι οποίες χρησιμοποιούν τις τεχνολογίες.νετ, όπως είναι οι desktop applications Web services. Τα πλεονεκτήματα που έχουν οι εφαρμογές.net είναι ότι, κατά κάποιο τρόπο, ενώνει τις εφαρμογές με το Internet. Αντί ο χρήστης να αλληλεπιδρά με μια εφαρμογή ή με ένα Ιστοχώρο, το.νετ συνδέει τον χρήστη με ένα σύνολο 102

103 υπολογιστών και υπηρεσιών, παρέχοντάς του μια ευρεία συλλογή πληροφοριών και υπηρεσιών. Παράλληλα είναι εφικτό ο χρήστης να έχει πρόσβαση στην εφαρμογή ή την υπηρεσία από οποιαδήποτε συσκευή, οποιαδήποτε στιγμή, αφού οι εφαρμογές και οι υπηρεσίες που δημιουργούνται μπορούν να βρίσκονται συνεχώς στο Διαδίκτυο. Το.NET Framework περιέχει τρία βασικά τμήματα : Common Language Runtime : είναι ένα runtime environment, το οποίο διαχειρίζεται την εκτέλεση του κώδικα των προγραμμάτων.net, παρέχοντας παράλληλα υπηρεσίες όπως διαχείριση μνήμης και εξαιρέσεων (exceptions), αποσφαλμάτωση και ασφάλεια. Framework Class Library: είναι το σύνολο των κλάσεων που αποτελούν το.net Framework. Οι κλάσεις που περιέχονται αφορούν όλες τις επιπλέον λειτουργίες, εκτός των βασικών, που μπορεί να προστεθούν σε κάποια εφαρμογή, όπως η σύνδεση με μια βάση, η δημιουργία αρχείου XML, η υποστήριξη δημιουργίας εφαρμογών Web-based και desktop-based, όπως επίσης και εφαρμογές SOAP-based XML Web services. ASP.NET: είναι μια server-side Web technology από την Microsoft για την δημιουργία ιστοσελίδων. Η ASP.NET υιοθετεί μια αντικειμενοστραφή μέθοδο προγραμματισμού για την δημιουργία μιας ιστοσελίδας. Το χαρακτηριστικό που έχει είναι ότι κάθε στοιχείο της σελίδας αντιμετωπίζεται ως ξεχωριστό αντικείμενο. 103

104 4.1.2 Microsoft SQL Server 2005 Ο SQL Server της Microsoft είναι ένα σχεσιακό σύστημα διαχείρισης βάσεων δεδομένων. (relational database management system (RDBMS)). Η γλώσσα αιτημάτων που χρησιμοποιεί είναι η Transact-SQL, η οποία είναι μια εφαρμογή του ANSI/ISO standard Structured Query Language (SQL). Ο SQL Server 2005 είναι ένα πλήρες πρόγραμμα δημιουργίας και διαχείρισης βάσεων. Η δημιουργία βάσεων και πινάκων είναι μια εύκολη και γρήγορη διαδικασία, ενώ εξαιτίας της τεχνολογίας Common Language Runtime (CLR) Integration δίνεται η δυνατότητα στον χρήστη να δημιουργήσει μια βάση μέσω του Visual Studio.NET. Παράλληλα, η τεχνολογία Deep XML Integration δίνει την δυνατότητα να αποθηκευτούν ολόκληρα αρχεία ή τμήματα αρχείων XML στις βάσεις. Επιπλέον παρέχει ένα αρκετά υψηλό επίπεδο ασφάλειας των βάσεων, με διάφορες τεχνικές όπως η κρυπτογράφηση των βάσεων, περισσότερες επιλογές ασφαλείας εξαρχής, πολιτική επιβολής κωδικού πρόσβασης σε μια βάση, και η ύπαρξη ενός ενισχυμένου προτύπου ασφαλείας. Το βασικό χαρακτηριστικό του SQL Server, το οποίο χρησιμοποιούμε σε αυτή την εφαρμογή είναι η δυνατότητα του replication. Με την συγκεκριμένη τεχνολογία μπορούμε να συγχρονίσουμε δυο βάσεις μεταξύ τους, ώστε να μπορούν να ανταλλάσουνε δεδομένα. Τα συστατικά στοιχεία του replication είναι τα εξής : Distributor : ο Distributor server, παίζει τον ρόλο του ενδιάμεσου server, μεταξύ των Publisher και Subscriber. Σε αυτό τον server συνδέονται οι άλλοι δυο, και πραγματοποιείται η ανταλλαγή των δεδομένων. Περιέχει την βάση διανομής (distribution db) μέσω της οποίας γίνεται η ομαλή μεταφορά δεδομένων από τον ένα server στον άλλο. 104

105 Publisher : είναι ο server ο οποίος περιέχει τα δεδομένα, τα οποία θα χρησιμοποιηθούν για το replication. Επιπλέον αντιλαμβάνεται αν έχει γίνει κάποια αλλαγή στα δεδομένα της βάσης και την διατηρεί. Subscriber : σε αυτόν τον server αποθηκεύονται αντίγραφα των βάσεων που βρίσκονται στον Publisher. Εάν ο χρήστης αλλάξει τα δεδομένα της βάσης που βρίσκεται στον συγκεκριμένο server, οι αλλαγές, ανά περιόδους, αποστέλλονται και στον Publisher, ώστε να καταχωρηθούν. Μερικές φορές, υπάρχει η περίπτωση ο Subscriber, να χρησιμοποιηθεί σαν Publisher, και να αποστείλει τα δεδομένα σε άλλους Subscriber. Publication : στον Publisher περιέχονται συλλογές από Articles, τα οποία βρίσκονται στην Publication db. Αυτά τα Articles είναι τα δεδομένα που αποστέλλει ο Publisher στους Subscribers. Είναι δηλαδή τα δεδομένα του replication. Κάθε βάση που χρησιμοποιείται ως Publication πρέπει να δηλωθεί στον Publisher. Article : είναι κάθε γκρουπ δεδομένων, τα οποία χρησιμοποιούνται για το replication. Μπορεί να περιέχει όλους τους πίνακες μιας βάσης, μερικούς από τους πίνακες της βάσης ή ακόμα και ένα τμήμα από κάποιον πίνακα της βάσης. Subscriptions : είναι η βάση που δηλώνεται για να αποσταλούν τα δεδομένα από τον Publisher προς τον Subscriber, και γενικά για να γίνει ο συγχρονισμός των βάσεων. 105

106 Agents : πραγματοποιούν όλοι την δουλειά του replication. Συγκεντρώνουν τις αλλαγές και πραγματοποιούν τις κατάλληλες εργασίες, ώστε να διανεμηθούν σωστά τα δεδομένα. Οι Agents είναι τα εκτελέσιμα, τα οποία εξ ορισμού τρέχουν στον φάκελο SQL Server Agent μέσα στο SQL Server Management Studio (SSMS) Κατηγορίες Replication Υπάρχουν τρεις κατηγορίες Replication Snapshot Replication: ο συγκεκριμένος τύπος Replication διανέμει τα στοιχεία του Publication, ακριβώς όπως είναι σε μια δεδομένη χρονική στιγμή (που έχουμε ορίσει εμείς), και δεν ελέγχει για οποιεσδήποτε αλλαγές έχουν γίνει στα στοιχεία. Είναι η κατάλληλη κατηγορία για δεδομένα τα οποία δεν μεταβάλλονται συχνά. Transactional Replication: χρησιμοποιώντας την συγκεκριμένη κατηγορία, οποιαδήποτε αλλαγή πραγματοποιείται σε μια βάση, εμφανίζεται άμεσα και στην άλλη. Τέτοιες αλλαγές είναι η εισαγωγή νέων δεδομένων, η διαγραφή κάποιων άλλων ή η ενημέρωση κάποιων άλλων. Αυτή η κατηγορία χρησιμοποιείται κυρίως σε περιβάλλον server-to-server. Παραδείγματος χάριν, τα αυτόματα καταστήματα επισκευής πρέπει να έχουν σε πραγματικό χρόνο στοιχεία σχετικά με τις αποθήκες εμπορευμάτων τους και άλλα καταστήματα. Με τη χρησιμοποίηση της Transactional Replication σε όλα τα καταστήματα, είναι δυνατό για κάθε ένα από τα καταστήματα να είναι γνωστός ο τρέχων κατάλογος, και οι ελλείψεις αποθεμάτων μπορούν να προβλεφθούν. 106

107 Merge Replication: με το Merge Replication έχουμε μεγαλύτερη αυτονομία στις κινήσεις μας. Σε αυτή την περίπτωση δίνεται η δυνατότητα σε ένα Subscriber να πραγματοποιήσει διάφορες αλλαγές στην βάση, οι οποίες διαδίδονται στον Publisher, και αλλάζει το Publication. Στην συνέχεια αυτές οι αλλαγές μπορούν να μεταφερθούν και σε άλλους Subscribers MapPoint Web Service Το MapPoint Web Service είναι μια διαδικτυακή υπηρεσία της Microsoft, η οποία έχει σχεδιαστεί για να λειτουργεί με την βοήθεια του Graphical Information System (GIS) και ανταποκρίνεται σε διάφορα σενάρια χαρτογράφησης, τα οποία αφορούν διάφορους τύπους εφαρμογών, όπως διάφορα portal, ιστοσελίδες, αλλά κυρίως εφαρμογές κινητών. Σε συνδυασμό με το MapPoint Location Server (server o οποίος εντοπίζει την θέση μιας κινητής συσκευής) δημιουργούν ένα πακέτο ιδιαίτερα αποδοτικό για την δημιουργία μιας ολοκληρωμένης εφαρμογής Location Based. Κάποιοες από τις τυπικές εργασίες που μπορούν να εκτελεστούν από το MapPoint Web Service (MWS) είναι η απεικόνιση χαρτών (Render), η εύρεση συντεταγμένων μιας διεύθυνσης (geo-coding), αλλά και η εύρεση της διεύθυνσης μέσω των συντεταγμένων που δίνουμε στο σύστημα ( reverse geo-coding), αναζήτηση διευθύνσεων σε κοντινές αποστάσεις από την τρέχουσα θέση του χρήστη, οδηγίες διαδρομής. Όπως γίνεται αντιληπτό, οι εργασίες που αναφέρθηκαν δείχνουν πόσο χρήσιμο είναι το MapPoint για την δημιουργία μιας LBS εφαρμογής. Η αποστολή των πληροφοριών από τον server στην εφαρμογή γίνεται με την βοήθεια του πρωτοκόλλου SOAP (Simple Object Access Protocol). To συγκεκριμένο πρωτόκολλο αναπτύχθηκε από την Microsoft, με σκοπό να γίνει εφικτή η επικοινωνία μεταξύ δυο προγραμμάτων, τα οποία τρέχουν σε διαφορετικό λειτουργικό 107

108 σύστημα. Το SOAP χρησιμοποιείται συμπληρωματικά με το HTTP (Hypertext Transfer Protocol) και την XML ( Extensible Markup Language). Και το HTTP και η XML έχουν την δυνατότητα να λύσουν το πρόβλημα επικοινωνίας μεταξύ δυο προγραμμάτων που τρέχουν σε διαφορετικό λειτουργικό. Με το SOAP καθορίζεται επακριβώς το τι κωδικοποιείται σε μια επικεφαλίδα HTTP και σε ένα XML αρχείο, έτσι ώστε ένα πρόγραμμα σε έναν υπολογιστή να μπορεί να καλέσει ένα πρόγραμμα σε έναν άλλο υπολογιστή και να του αποστείλει πληροφορίες. Παράλληλα καθορίζεται και ο τρόπος απάντησης του δεύτερου προγράμματος στο πρώτο. Το MWS έχει τέσσερις βασικές υπηρεσίες : Find Service: εύρεση διευθύνσεων, αξιοθεάτων, συντεταγμένων σημείων, σημείων μέσα σε μια απόσταση από την θέση του χρήστη, ανάλογα με τον τύπο και τον τρόπο που θα κάνουμε την αναζήτηση. Render Service : δημιουργεί την εικόνα του χάρτη, με βάση τα δεδομένα που θέλουμε Route Service: δημιουργεί μια διαδρομή μεταξύ δυο στοιχείων που έχουμε δηλώσει. Το είδος της διαδρομής και τα σημεία από τα οποία θα περνάει είναι συνάρτηση των δεδομένων που έχουμε δώσει. Common Service: περιέχει κλάσεις, οι οποίες είναι κοινές και στις τρεις προηγούμενες υπηρεσίες, όπως για παράδειγμα ο ορισμός του DataSource, στο οποίο θα κάνει την αναζήτησή της η υπηρεσία που έχουμε καλέσει. 108

109 Το MapPoint Location Server (MLS) εντοπίζει την τρέχουσα θέση ενός χρήστη, εντοπίζοντας το σημείο που βρίσκεται η κινητή συσκευή (συμπεριλαμβάνονται οι απλές κινητές συσκευές, τα Pocket Pc, PDA, SmartPhones και γενικά όλες οι συσκευές που είναι καταγεγραμμένες). Η εύρεση της θέσης γίνεται με διάφορους τρόπους, όπως την μέθοδο Cell-ID, Α-GPS, αλλά και με τις τριγωνικές μεθόδους. Η εύρεση ενός κινητού σε ένα δίκτυο Α και σε ένα δίκτυο Β γίνεται με την χρήση ενός SOAP-based API, το οποίο δίνει την δυνατότητα να γίνει ταυτόχρονη αναζήτηση σε διαφορετικά δίκτυα, τα οποία πιθανόν να έχουν διαφορετική μορφή. 4.2 Βάσεις εφαρμογής Έχουν προστεθεί στην φορητή συσκευή δυο κινητές βάσεις ( mobile db), οι οποίες είναι οι ID και poi. Στην πρώτη περιέχονται οι προσωπικοί κωδικοί του χρήστη, ενώ στην δεύτερη τα αξιοθέατα που έχει προσθέσει ο χρήστης. Παράλληλα έχουμε και δυο βάσεις με αντίστοιχες ονομασίες, οι οποίες βρίσκονται στον Server, και ανταλλάσουν δεδομένα μεταξύ τους, με την διαδικασία του Merge Replication (Παράρτημα Α), μέσω του IIS. Η ανταλλαγή δεδομένων γίνεται αμφίδρομα. Δηλαδή και οι κινητές βάσεις μπορούν να στείλουν δεδομένα στις άλλες βάσεις, αλλά και δέχονται στοιχεία από τις βάσεις. Στις κινητές βάσεις δεν έχουμε ορίσει πίνακες. Και αυτό γιατί κατά τον συγχρονισμό δημιουργούνται αυτόματα. Στην βάση ID, που βρίσκεται στον server, έχει δημιουργηθεί ένας πίνακας με την ονομασία stoixeia, ενώ στην βάση poi υπάρχουν δυο πίνακες, ο stoixeia, που είναι αποθηκευμένα τα προσωπικά αξιοθέατα του χρήστη, και ο GPois, στον οποίο βρίσκονται οι κατηγορίες γενικών αξιοθεάτων που έχει επιλέξει ο χρήστης. Οι βάσεις δημιουργήθηκαν μέσω του Microsoft SQL Server Management Studio. 109

110 Ο πίνακας (stoixeia) της βάσης ID έχει δυο στήλες, την username και την password. Όπως γίνεται αντιληπτό και από τα ονόματα των στηλών, στον συγκεκριμένο πίνακα αποθηκεύονται τα στοιχεία των χρηστών. Η βάση poi έχει δυο πίνακες, τον GPois και τον stoixeia. Ο πίνακας GPois αποτελείται από δυο στήλες, την userid και την poi_name. Στην πρώτη στήλη αποθηκεύεται το username του χρήστη, και στην επόμενη το όνομα της κατηγορίας που έχει επιλέξει. Επειδή δεν υπάρχει κάποιο κλειδί στην βάση, το όνομα του χρήστη μπορεί να εμφανίζεται πολλές φορές μέσα στην βάση, όπως επίσης και το όνομα κάποιου αξιοθέατου. Ο συνδυασμός username και poi_name δεν μπορεί να εμφανιστεί πάνω από μια φορά, αλλά αυτό ρυθμίζεται μέσα από την εφαρμογή. Οι κινητές βάσεις έχουν τα ίδια ονόματα με τις προηγούμενες βάσεις. Αυτές τις βάσεις όμως τις δημιουργούμε μέσα από το Visual Studio. 4.3 Ρύθμιση MapPoint reference Όπως είπαμε, η συγκεκριμένη εφαρμογή είναι μια Location-Based εφαρμογή, η οποία χρησιμοποιεί το MapPoint Web Service, για τον εντοπισμό διευθύνσεων, γενικών αξιοθεάτων, δημιουργία χαρτών κλπ. Για να μπορέσει η εφαρμογή να χρησιμοποιήσει το MapPoint Web Service, θα πρέπει να το προσθέσουμε ως Web Reference στην εφαρμογή. Ακολουθώντας την διαδρομή Project -> Add Web Reference εμφανίζεται το επόμενο παράθυρο : 110

111 Πληκτρολογούμε στο URL την διεύθυνση 30/mappoint.wsdl και πατώντας το κουμπί Go εμφανίζεται το επόμενο παράθυρο: 111

112 Από την επιλογή Web Reference name: μπορούμε να αλλάξουμε το όνομα του reference. Πατώντας το κουμπί Add Reference, προστίθεται στο project μας το reference για το MapPoint. 112

113 4.4 Κώδικας Εφαρμογής Όπως αναφέρθηκε και προηγουμένως, η εφαρμογή δίνει την δυνατότητα στον χρήστη να βλέπει την τρέχουσα θέση του, να βρίσκει μια διαδρομή μεταξύ δυο σημείων, όπως επίσης να προσθέτει προσωπικά αξιοθέατα και να επεξεργάζεται τις κατηγορίες γενικών αξιοθεάτων που έχει επιλέξει. Οι κατηγορίες γενικών αξιοθεάτων που υπάρχουν είναι οι εξής: Airport (αεροδρόμια) AncientSite (Αρχαιολογικοί χώροι) Hospital (Νοσοκομεία) MetroStation (Σταθμοί Μετρό) Museum (Μουσεία) ShoppingCenter ( Εμπορικά κέντρα) Stadium (Στάδια- Αθλητικές Εγκαταστάσεις) 113

114 Η εφαρμογή αποτελείται από εφτά φόρμες και εφτά κλάσεις. Οι έξι από τις κλάσεις χρησιμοποιούνται για την σύνδεση με το MapPoint Web Service, και εκτελούν διαφορετικό είδος εργασίας. Η έβδομη κλάση χρησιμοποιείται για τον συγχρονισμό των βάσεων. Ο τρόπος που συνδέονται οι φόρμες μεταξύ τους φαίνεται στο ακόλουθο σχήμα. Είσοδος Register1 Καλώς ήλθατε Register2 Map Pois Register3 114

115 Στην φόρμα Map έχουν τοποθετηθεί τόσο η εύρεση θέσης όσο και η εύρεση μιας διαδρομής. Ο λόγος θα εξηγηθεί όταν θα αναλυθεί η φόρμα. Αντίστοιχα στην Pois έχουν ενσωματωθεί τόσο η προβολή και επεξεργασία των προσωπικών αξιοθεάτων του χρήστη, όσο και των γενικών αξιοθεάτων. Στην συνέχεια θα γίνει μια περιγραφή των κλάσεων και στην συνέχεια μια ανάλυση των φορμών της εφαρμογής Κλάσεις Εφαρμογής Πριν γίνει ξεχωριστή περιγραφή κάθε κλάσης ξεχωριστά, θα γίνει μια πρώτη αναφορά σε μεταβλητές που χρησιμοποιούνται από σχεδόν όλες τις κλάσεις. Οι μεταβλητές αυτές σχετίζονται κυρίως με λειτουργίες του MapPoint Web Service, και χρησιμοποιούνται σε όλες τις κλάσεις. Mεταβλητές τύπου FindServiceSoap H κλάση FindServiceSoap συνδέεται με το MapPoint Web Service και πραγματοποιεί αναζητήσεις διευθύνσεων, συντεταγμένων ή αξιοθεάτων, ανάλογα με τα δεδομένα που θα της δώσουμε. Για να μπορέσει να συνδεθεί θα πρέπει πρώτα να την ενεργοποιήσουμε χρησιμοποιώντας τους κωδικούς πρόσβασης, που έχουμε αποκτήσει κατά την εγγραφή μας στο MapPoint Web Service. findservice.credentials = New System.Net.NetworkCredential(myUserName, mypassword) 115

116 Για λόγους απόδοσης, καλό η παράμετρος PreAuthenticate να τεθεί κατευθείν ίση με True. Και αυτό διότι σε αντίθετη περίπτωση υπάρχει η πιθαντότητα κατά την διάρκεια εκτέλεσης του προγράμματος, η εφαρμογή μας να ανταλλάσει δεδομένα με το MapPoint, απλά για την πιστοποίηση της ταυτότητας του χρήστη, αυξάνοντας με αυτό τον τρόπο τον χρόνο εκτέλεσης του προγράμματος. findservice.preauthenticate = True Μεταβλητές τύπου RouteServiceSoap Οι μεταβλητές αυτού του είδους χρησιμοποιούνται για την δημιουργία μιας διαδρομής μεταξύ δυο σημείων. Όπως και οι μεταβλητές τύπου FindServiceSoap, πρέπει, πριν χρησιμοποιηθούν, να ενεργοποιηθούν. Μεταβλητές τύπου FindSpecification Το συγκεκριμένο object χρησιμοποιείται από την FindServiceSoap, ώστε η FindServiceSoap να πραγματοποιήσει αναζητήσεις αξιοθεάτων. Τα στοιχεία που θα πρέπει να ορίσουμε σε μία FindSpecification μεταβλητή είναι το όνομα της κατηγορίας των αξιοθεάτων που θέλουμε (EntityTypeNames), η πηγή στην οποία θα συνδεθεί για να κάνει την αναζήτηση (DataSourceName), ενώ από την ρύθμιση της παραμέτρου Options, μπορούμε να περιορίσουμε σημαντικά τον όγκο των αποτελεσμάτων που θα μας επιστραφούν. Οι κυριότερες παράμετροι που μας απασχολούν είναι : 1. Range : δείχνει τον μέγιστο αριθμό των αποτελεσμάτων που μπορεί να γυρίσει το MapPoint Web Service. Εξ ορισμού, ο αριθμός αυτός είναι 25.Ο μέγιστος αριθμός που μπορόυμε να θέσουμε είναι το

117 2. ThresholdScore : Κάθε αποτέλεσμα που επιστρέφεται απο το MapPoint Web Service έχει μια τιμή, η οποία υποδηλώνει το βαθμό συσχέτισής του με την αναζήτηση. Αυτή η τιμή είναι υποθηκευμένη στο ThresholdScore. Η εξ ορισμού τιμή του είναι 0,85. Όσο η τιμή που έχει το ThresholdScore μικραίνει, τόσο αυξάνεται το πλήθος των αποτελεσμάτων που επιστρέφονται, αφού μειώνουμε τον βαθμός συσχέτισης. Αντίθετα αν τον μεγαλώσουμε θα επιστρέφονται όλο και λιγότερα αποτελέσματα. 3. SearchContext : είναι ένας ακέραιος που δείχνει την περιοχή, στην οποία θα περιοριστεί η αναζήτηση. Και αυτό διότι με στο DataSource δηλώσαμε τον χάρτη στον οποίο θα γίνει η αναζήτηση. Αν δεν δηλώσουμε ότι θέλουμε μόνο τα αποτελέσματα που αφορούν την Ελλάδα, τότε θα μας επιστρέψει όλα τα αποτελέσματα που αφορούν την Ευρώπη. Το 98 είναι για την Ελλάδα. Μεταβλητές τύπου FindAddressSpecification Το συγκεκριμένο object χρησιμοποιείται από την FindServiceSoap, ώστε η FindServiceSoap να πραγματοποιήσει αναζητήσεις διευθύνσεων. Τα στοιχεία που χρειάζεται είναι η διεύθυνση του σημείου (InputAddress), και τον χάρτη στον οποίο θα γίνει η αναζήτηση (DataSourceName), ο οποίος στην περίπτωση μας είναι ο MapPoint.EU 117

118 Μεταβλητές τύπου FindResults και FindResult Στις συγκεκριμένες μεταβλητές αποθηκεύονται τα αποτελέσματα της αναζήτησης που πραγματοποιήθηκε από τις μεταβλητές τύπου FindServiceSoap, με την χρήση είτε μεταβλητών τύπου FindAddressSpecification είτε μεταβλητών FindSpecification. Η διαφορά μεταξύ των δύο τύπων (FindResults και FindResult) είναι ότι στην πρώτη μπορούν να αποθηκευτούν πολλά αποτελέσματα, ενώ στην δεύτερη μόνο ένα. Μεταβλητές τύπου LatLong() Στις συγκεκριμένες μεταβλητές αποθηκεύουμε τις συντεταγμένες των σημείων που θέλουμε να απεικονιστούν στον χάρτη. Σε κάθε τέτοια μεταβλητή μπορούμε να αποθηκεύσουμε όσες συντεταγμένες επιθυμούμε, αρκεί να έχουμε δηλώσει εκ των προτέρων το μέγεθος του πίνακα LatLong(). Μεταβλητές τύπου Pushpin() Αυτού του είδους οι μεταβλητές χρησιμοποιούνται για την εμφάνιση πινεζών (Pushpins) στον χάρτη. Κάθε Pushpin είναι και ένα από τα σημεία που θέλουμε να εμφανιστεί στον χάρτη. Για να εμφανιστεί ένα Pushpin στον χάρτη, θα πρέπει να έχουμε ορίσει τις εξής παραμέτρους: 1. LatLong: τις συντεταγμένες, στις οποίες θα εμφανιστεί. 2. IconDataSource : από που θα βρει την εικόνα που θα τοποθετηθεί στο σημείο που ορίζουν οι συντεταγμένες. Ο κάθε χρήστης μπορεί να δημιουργήσει δικές του εικόνες, και να τις τοποθετήσει στο προσωπικό του DataSource, το οποίο μπορεί να δημιουργήσει μέσα στο MapPoint 118

119 Web Service. Στην συγκεκριμένη εφαρμογή συνδεόμαστε στο DataSource που έχει το MapPoint για εικόνες (MapPoint.Icons). 3. IconName : στο DataSource που γίνεται αναζήτηση εικόνων, μπορεί να υπάρχουν αποθηκευμένες περισσότερες από μια. Για το λόγο αυτό δίνουμε το όνομα του Pushpin που θέλουμε να τοποθετηθεί. Στο συτγκεκριμένο DataSource που συνδέεται η εφαρμογή υπάρχουν δυο διαφορετικές εικόνες με την ονομασία 0 και 1. Και οι δυο απεικονίζουν μια πινέζα σε διαφορετική απόχρωση (μπλε η 0 και κόκκινη η 1 ). 4. Label : εδώ ορίζουμε το όνομα που θέλουμε να εμφανίζεται πάνω από το Pushpin, ώστε ο χρήστης να καταλαβαίνει ποιο σημείο είναι αυτό που βλέπει. Μεταβλητές τύπου Route Στις συγκεκριμένες μεταβλητές αποθηκεύουμε την αρχή και το τέλος της διαδρομής, που θέλουμε να δημιουργηθεί. Επιπλέον μπορούμε να δηλώσουμε και κάποια ενδιάμεσα σημεία, από τα οποία θέλουμε να περάσει η διαδρομή. Σε αυτή την περίπτωση η διαδρομή δημιουργείται κατά τέτοιο τρόπο ώστε η διαδρομή να περνάει από τα συγκεκριμένα σημεία. Στην συγκεκριμένη εφαρμογή αποθηκεύουμε μόνο την αρχή και το τέλος της διαδρομής. Η διαδρομή που δημιουργείται χωρίζεται σε τμήματα αυτομάτως από το πρόγραμμα. Τα τμήματα αυτά θα χρησιμοποιηθούν για την προσομοίωση της κίνησης του χρήστη. Η εύρεση της διαδρομής γίνεται με την βοήθεια της μεταβλητής τύπου RouteServiceSoap. 119

120 Μεταβλητές τύπου ViewByHeightWidth() Η μεταβλητή αυτού του τύπου χρησιμοποιείται για τον ορισμό του τρόπου αναπαράστασης του χάρτη. Με την συγκεκριμένη κλάση ορίζουμε ένα κεντρικό σημείο, με βάση το οποίο θα προβληθεί ο χάρτης. Δεν μας ενδιαφέρει αν θα απεικονίζονται όλα τα σημεία που έχουμε δηλώσει. Η συγκεκριμένη κλάση δημιουργεί τον χάρτη κατά τέτοιο τρόπο, ώστε στο κέντρο της εικόνας που προβάλλεται, να βρίσκεται το σημείο που θέλουμε, και, αν χωράνε στο μέγεθος του χάρτη, παρουσιάζονται και τα αξιοθέατα που δηλώσαμε. Μεταβλητές τύπου ViewByBoundingLocations Η μεταβλητή αυτού του τύπου χρησιμοποιείται για τον ορισμό του τρόπου αναπαραστάσης του χάρτη που έχουμε ζητήσει από το πρόγραμμα. Με τον συγκεκριμένο τρόπο η εικόνα που δημιουργείται προσαρμόζεται στα αντικείμενα που προβάλλονται στον χάρτη. Ενώ με την κλάση ViewByHeightWidth απεικονίζεται βασικά το σημείο που δηλώνουμε, χωρίς να μας ενδιαφέρει αν θα προβληθούν και τα υπόλοιπα σημεία, εδώ ο χάρτης προβάλλει όλα τα σημεία που θα ορίσουμε. Μεταβλητές τύπου Location() Στις μεταβλητές αυτού του τύπου αποθηκεύουμε τις συντεταγμένες των σημείων που θέλουμε να εμφανιστούν στον χάρτη. Κατόπιν τις τοποθεσίες αυτές τις τοποθετούμε στην παράμετρο Location της ViewByBoundingLocations, ώστε να απεικονιστούν στον χάρτη. 120

121 Μεταβλητές τύπου MapSpecification Δημιουργεί τον χάρτη που θέλουμε, ανάλογα με τις τιμές που δίνουμε στις παραμέτρους της μεταβλητής. Οι κυριότερες παράμετροι, τις οποίες χρησιμοποιούμε, είναι οι ακόλουθες : DataSource : σε ποιο χάρτη θα συνδεθεί ώστε να αναζητήσει τα σημεία που μας ενδιαφέρουν Views: αποθηκεύουμε το view, με βάση το οποίο θα δημιουργηθεί και θα παρουσιαστεί ο χάρτης. Options: στην παράμετρο Options, την οποία πριν την χρήση της πρέπει να την αρχικοποιήσουμε, αποθηκεύουμε το μέγεθος (ύψος και πλάτος) του PictureBox, στο οποίο θα τοποθετηθεί ο χάρτης, ώστε η δημιουργία του χάρτη να προσαρμοστεί στο μέγεθος του PictureBox. Παράλληλα, με την παράμετρο Zoom, μπορούμε να ορίσουμε τον βαθμό του Zoom που θα έχει ο χάρτης. Η εξ ορισμού τιμή είναι το 1, ενώ η κατώτατη τιμή που μπορούμε να θέσουμε είναι το 0. Pushpins: αποθηκεύουμε τα Pushpins, που τυχόν έχουν δημιουργήσει, ώστε να τοποθετηθούν πάνω στον χάρτη. Route: σε περίπτωση που έχουμε ορίσει μια διαδρομή, την αποθηκεύουμε σε αυτή την παράμετρο, ώστε σχεδιαστεί και να απεικονιστεί στον χάρτη. 121

122 Μεταβλητές τύπου RenderServiceSoap Αποδίδει σε εικόνα τον χάρτη που έχει σχηματιστεί από τις μεταβλητές τύπου MapSpecification. Και αυτό γιατί οι MapSpecificationδημιουργούν ένα ΜapImage, το οποίο πρέπει να μετατραπεί σε κανονική εικόνα ώστε να μπορέσει να παρουσιαστεί στην εφαρμογή. Πριν χρησιμοποιηθεί θα πρέπει να ακολουθηθεί η ίδια διαδικασία, όπως και με τις RouteServiceSoap και FindServiceSoap Κλάση Replication Η κλάση Replication χρησιμοποιείται για τον συγχρονισμό και την ανταλλαγή δεδομένων μεταξύ των βάσεων που βρίσκονται στην κινητή συσκευή και στις βάσεις που βρίσκονται στον server. Οι πληροφορίες που δίνονται από το κυρίως πρόγραμμα είναι το όνομα της κινητής βάσης, το όνομα της Publication της βάσης, όπως επίσης και το hostname. Όπως αναφέρεται και στο παράρτημα Α, το hostname χρησιμεύει για το φιλτράρισμα των στοιχείων που θα αποσταλούν στην κινητή βάση. Αυτό που θα πρέπει να προσεχθεί είναι η τιμή που δίνουμε στην παράμετρο InternetUrl. Στην συγκεκριμένη παράμετρο θέτουμε την εικονική διεύθυνση, που έχει δημιουργηθεί στον server μας, για είναι εφικτή η επικοινωνία μεταξύ των βάσεων. replication.interneturl = Στο πρώτο τμήμα του URL πρέπει να ορίσουμε τον server. Aν η ανταλλαγή δεδομένων γίνεται τοπικά, χωρίς την χρήση σύνδεσης Internet, τότε γράφουμε το όνομα του server. Δεν μπορούμε να γράψουμε αντί για το όνομα του server την παράμετρο localhost, γιατί το emulator έχει το δικό του localhost. Σε αυτή την περίπτωση λοιπόν, θα προσπαθούσε το emulator να εντοπίσει την διεύθυνση στο δικό του localhost. 122

123 Αν η ανταλλαγή γίνεται μέσω Internet, τότε στο πρώτο τμήμα γράφουμε την IP του μηχανήματος, στο οποίο βρίσκεται ο server. Η συγκεκριμένη περίπτωση είναι ιδιαίτερη, γιατί η ανταλλαγή γίνεται τοπικά αλλά με την χρήση Internet. Τοπικά γιατί ο emulator που τρέχει βρίσκεται στο ίδιο μηχάνημα με τον server, και με την χρήση Internet, γιατί έχουμε ρυθμίσει το ActiveSync να συνδέεται στο Internet. Για το λόγο αυτό βρίσκουμε την IP που έχει ο server πίσω από το Router, και το γράφουμε στο πρώτο τμήμα της διεύθυνσης. Το ReplSync είναι ο φάκελος που έχει δημιουργηθεί για την ανταλλαγή των δεδομένων ενώ το sqlcesa30.dll είναι το απαραίτητο dll αρχείο για την ανταλλαγή. Τα υπόλοιπα στοιχεία που δηλώνουμε έχουν να κάνουν με τον ορισμό των βάσεων, οι οποίες θα ανταλλάξουν δεδομένα Κλάση GetAddress Με την συγκεκριμένη κλάση βρίσκουμε μια ή περισσότερες διευθύνσεις, με βάση τις πληροφορίες που δίνονται από τον χρήστη. Οι πληροφορίες που δίνονται από το κυρίως πρόγραμμα είναι το διεύθυνση του σημείου (όνομα οδού και αριθμός), ενώ προαιρετικά μπορεί ο χρήστης να δώσει κα ταχυδρομικό κώδικα. Αν δεν δώσει ταχυδρομικό κώδικα, τότε το πιθανότερο είναι ότι θα βρεθούν περισσότερα από ένα αποτελέσματα, αλλιώς θα βρεθεί μόνο ένα. Τα αποτελέσματα που βρίσκονται αποθηκεύονται και σε μια μεταβλητή τύπου FindResults, η οποία και επιστρέφεται στο κυρίως πρόγραμμα. Ο λόγος που χρησιμοποιείται η συγκεκριμένη κλάση είναι για την εύρεση και αποθήκευση των συντεταγμένων της διεύθυνσης που θέλει ο χρήστης. Όπως θα δούμε και κατά την επεξήγηση του κυρίως προγράμματος, η συγκεκριμένη κλάση χρησιμοποιείται κατά την αποθήκευση των προσωπικών αξιοθεάτων που γράφει ο χρήστης. Και ο σκοπός της είναι διπλός. Αφενός μεν να δώσει την δυνατότητα στον 123

124 χρήστη να επιλέξει το αξιοθέατο που επιθυμεί, αν δεν έχει δώσει ταχυδρομικό κώδικα και βρεθούν περισσότερες της μιας διεύθυνσης, αφετέρου να αποθηκεύσουμε τις συντεταγμένες του σημείου που τελικώς επιλέγει ο χρήστης, ώστε αν θελήσουμε να απεικονίσουμε το σημείο στον χάρτη, να έχουμε έτοιμες τις συντεταγμένες του, και να μην χρειάζεται εκείνη την στιγμή να γίνει αναζήτηση τους μέσω του MapPoint Web Service Κλάση generalpois1 Η συγκεκριμένη κλάση βρίσκει όλα τα γενικά αξιοθέατα της κατηγορίας που έχει επιλέξει ο χρήστης, και επιστρέφει τα αποτελέσματα στο κυρίως πρόγραμμα. Αν ο χρήστης έχει επιλέξει να βρεθούν αξιοθέατα μέσα σε μια συγκεκριμένη απόσταση, τότε πραγματοποιούνται οι κατάλληλοι έλεγχοι, ώστε να ικανοποιηθεί η επιλογή αυτή του χρήστη. Οι μεταβλητές, οι τιμές των οποίων πρέπει να δοθούν από το κυρίως πρόγραμμα είναι : entityname, που είναι η κατηγορία των αξιοθεάτων που έχει επιλέξει ο χρήστης και για την οποία θα γίνει η αναζήτηση, Distance : έχει αποθυκευμένη την απόσταση, μέσα στην οποία πρέπει να είναι τα αποτελέσματα που επιθυμεί ο χρήστης. mylatlongs: η οποία έχει καταχωρημένες τις συντεταγμένες της τρέχουσας θέσης του χρήστη, οι οποίες θα χρησιμοποιηθούν εάν ο χρήστης θέλει αξιοθέατα μέσα σε μια συγκεκριμένη απόσταση. 124

125 Αντίθετα, η μεταβλητή entitiesnum δεν δίνεται από το κυρίως πρόγραμμα. Ο σκοπός της είναι να κρατάει τον αριθμό των αποτελεσμάτων που βρέθηκαν, ώστε να χρησιιμοποιηθεί αναλόγως από το κυρίως πρόγραμμα. Για το λόγο αυτό έχει δηλωθεί και ως public. Ένα άλλο στοιχείο που θα πρέπει να επισημανθεί σχετικά με την entitiesnum, είναι ο λόγος που αρχικοποιείται (παίρνει τιμή ίση με το 0) κάθε φορά που τρέχει η συνάρτηση της κλάσης, και όχι κατά την δήλωσή της. Ο λόγος είναι ότι αν θέταμε την τιμή της ίση με το μηδέν κατά τη δήλωση της μεταβλητής, τότε κάθε φορά που θα έτρεχε η κλάση, η μεταβλητή θα είχε κρατημένο και τον αριθμό των αξιοθεάτων που βρέθηκανε και την προηγούμενη φορά που χρησιμοποιήθηκε η κλάση. Εμείς όμως θέλουμε κάθε φορά που τρέχει η κλάση να μετράει τον αριθμό των αξιοθέατων που έχουμε βρει εκείνη την φορά. Πριν ξεκινήσει να γίνεται η αναζήτηση των αξιοθεάτων, γίνεται πρώτα ένας έλεγχος για το αν η μεταβλητή distance έχει τιμή ή όχι. Αν δεν έχει τότε αυτό σημαίνει ότι ο χρήστης θέλει να δει όλα τα αξιοθέατα της συγκεκριμένης κατηγορίας. Εάν έχει βρεθεί έστω και ένα αποτέλεσμα, τότε για κάθε αποτέλεσμα γίνεται έλεγχος για το αν βρίσκεται στην Αττική, οπότε σε αυτή την περίπτωση αυξάνεται η μεταβλητή entitiesnum. If fr.foundlocation.entity.displayname.indexof("attiki") <> - 1 Then Επειδή στο SearchContext δεν μπορούμε να περιορίσουμε την αναζήτηση στην Αθήνα, αλλά μόνο στην Ελλάδα, είναι απαραίτητος αυτός ο έλεγχος, ώστε τα αποτελέσματα που θα επιστραφούν να βρίσκονται στην Αττική. Σε αντίθετη υπήρχε περίπτωση να μας εμφάνιζε αποτελέσματα από ολόκληρη την Ελλάδα. Ο έλεγχος που κάνει είναι για το αν στην διεύθυνση που επιστρέφεται υπάρχει η λέξη Αττική. Αν δεν υπάρχει εμφανίζεται η τιμή -1. Αν δεν εμφανιστεί σημαίνει ότι το αποτέλεσμα είναι στην Ατιική, οπότε το χρειαζόμαστε. Η διαδικασία ελέγχου του αξιοθεάτου πραγματοποιείται δύο φορές. Και αυτό γιατί για να αποθηκεύσουμε τα αποτελέσματα που μας ενδιαφέρουν πρέπει πρώτα να 125

126 έχουμε ορίσει το μέγεθος της foundentities. Οπότε την πρώτη φορά ελέγχουμε πόσα από τα αποτελέσματα που επιστρέφονται μας κάνουν, κρατάμε τον αριθμό και τον θέτουμε σαν μέγεθος στην foundentities. Στην δεύτερη φορά που εκτελείται ο ίδιος κώδικας, αποθηκεύουμε στην foundentities τα αποτελέσματα που μας ενδιαφέρουν. Η άλλη περίπτωση είναι ο χρήστης να θέλει τα αξιοθέατα που θα προβληθούν να είναι σε μιά συγκεκριμένη απόσταση από την τρέχουσα θέση του. Η μεταβλητή distance περιέχει την τιμή που έχει θέσει ο χρήστης. Επειδή είναι τύπου String, θα πρέπει να μετατραπεί σε Double, ώστε ο κώδικας να μπορέσει να την χρησιμοποιήσει. apostasi = Convert.ToDouble(distance) Η μεταβλήτη apostasi δείχνει την απόσταση που έχει ορίσει ο χρήστης, αλλά σε μέτρα. Θα πρέπει να μετατραπεί σε μοίρες, ώστε να μπορούμε να κάνουμε πράξεις με τις συντεταγμένες των αξιοθεάτων και της τρέχουσας θέσης του χρήστη. Για το λόγο αυτό διαιρείται η apostasi με το , που είναι, στο περίπου, η απόσταση μεταξύ δυο βαθμών γεωγραφικού μήκους. Με την διαίρεση αυτή προκύπτει ένας δεκαδικός αριθμός, ο οποίος δείχνει, σε μοίρες, την μέγιστη διαφορά που θα πρέπει να έχουν τα latitudes των αξιοθεάτων με την θέση του χρήστη, ώστε να είναι μέσα στην απόσταση που έχει θέσει ο χρήστης και να απεικονιστούν στον χάρτη. Στην συνέχεια η apostasi διαιρείται και με το 95506, το οποίο είναι, στο περίπου, η απόσταση μεταξύ δυο βαθμών γεωγραφικού πλάτους, ώστε να χρησιμοποιηθεί ως μέγιστη διαφορά για τα longtitudes των αξιοθεάτων και της τρέχουσας θέσης. latitude = apostasi / longtitude = apostasi / Αφού μετατραπεί η απόσταση που έδωσε ο χρήστης σε μοίρες, στην συνέχεια πραγματοποιείται ο ίδιος έλεγχος με πριν, για το αν τα αξιοθέατα βρίσκονται στην Αττική. Αν περάσει τον πρώτο έλεγχο, τότε ελέγχονται οι συντεταγμένες του, ώστε να βρεθεί αν είναι μέσα στην συγκεκριμένη απόσταση που θέλει ο χρήστης. 126

127 If (Math.Abs(mylatlongs(0).Latitude - fr.foundlocation.latlong.latitude) < latitude) And (Math.Abs(mylatlongs(0).Longitude - fr.foundlocation.latlong.longitude) < longtitude) Then Η συνάρτηση Math.Abs επιστρέφει την απόλυτη τιμή της διαφοράς της μεταξύ της τρέχουσας θέσης του χρήστη και της θέσης του αξιοθεάτου. Θέλουμε την απόλυτη τιμή της διαφοράς, γιατί διαφορετικά θα υπήρχε η περίπτωση να συμπεριληφθούν στον χάρτη αξιοθέατα που δεν θα ήτανε μέσα στην συγκεκριμένη απόσταση. Αυτό θα συνέβαινε εάν η μεταξύ τους διαφορά είχε αρνητικό πρόσημο, όποτε όση και να ήτανε, θα ήτανε μικρότερη της μεταβλητής latitude. Έτσι θα ήταν πιθανό πολύ μακρινά αξιοθέατα να εμφανίζονταν στον χάρτη, επειδή η συντεταγμένες τους ήτανε μεγαλύτερες από τις συντεταγμένες της θέσης, και η διαφορά θα έβγαινε αρνητική. Όπως και πριν, έτσι και τώρα ο ίδιος έλεγχος γίνεται δυο φορές, μία για την εύρεση του πλήθους των αποτελεσμάτων και μία ακόμη για την αποθήκευση των αποτελεσμάτων. Στην συνέχεια επιστρέφονται τα αποτελέσματα που βρέθηκαν Κλάση generalpois2 Η συγκεκριμένη κλάση δέχεται τα αποτελέσματα που βρεθήκαν από την genaralpois1 και τα δημιουργεί τον χάρτη, με την αναπαράσταση όλων των αξιοθεάτων που βρεθήκανε, αλλά και της τρέχουσας θέσης του χρήστη. Ανάλογα με τον αριθμό των αποτελεσμάτων (entitiesnum) που έχουν βρεθεί από την generalpois1, ορίζεται το μέγεθος της mylocations (τα σημεία που θα εμφανιστούν) και της pushpins (οι πινέζες που θα τοποθετηθούν και θα δείχνουν το αντίστοιχο σημείο της mylocations). Αφού δοθούν οι συντεταγμένες, στην συνέχεια, με την χρήση της κλάσης ViewByBoundingLocations, δημιουργείται ο χάρτης. 127

128 Επειδή στην παράμετρο Label των pushpins τοποθετούμε έναν αριθμό, ο οποίος είναι η σειρά που έχει το αξιοθέατο στην λίστα αποτελεσμάτων, υπάρχει ένα ListoBox (List1), στο οποίο αποθηκεύονται το όνομα του αξιοθεάτου, μαζί με τον ριθμό που εμφανίζεται και στον χάρτη, ώστε ο χρήστης να μπορεί να πληροφορηθεί το τι ακριβώς δείχνει ο κάθε αριθμός Κλάση viewpois Η συγκεκριμένη κλάση επιστρέφει μια εικόνα με την τρέχουσα θέση του χρήστη και τα διάφορα προσωπικά αξιοθέατα που τυχόν έχει επιλέξει ο χρήστης να απεικονιστούν μαζί με την θέση του. Ορίζει το μέγεθος των mylocations και pushpins με βάση την μεταβλητή nums, η οποία δίνεται από το κυρίως πρόγραμμα. Στην συνέχεια λειτουργεί όπως ακριβώς και η generalpois2. Ένα διαφορετικό στοιχείο είναι η ρύθμιση της παραμέτρου zoom της μεταβλητής views. Ο κώδικας που το ρυθμίζει είναι ο ακόλουθος If zoom > 0 Then mapspec.options.zoom = zoom Else mapspec.options.zoom = 0.1 End If Η παράμετρος Zoom της mapspec έχει ως εξ ορισμού τιμή την 1, ενώ η κατώτερη τιμή που μπορεί να φτάσει είναι το 0. Επειδή η τιμή της μεταβλητής zoom, δίνεται από το κυρίως πρόγραμμα, θα πρέπει να γίνει ένας έλεγχος για το αν είναι μεγαλύτερη του 0. Αν είναι, περνάμε την τιμή στην παράμετρο mapspec.options.zoom = zoom, αλλιώς θέτουμε την mapspec.options.zoom ίση με 0.1, ώστε το πρόγραμμα να μην χτυπήσει. 128

129 Κλάση ΜakeRoute Η κλάση Makeroute δημιουργεί μια διαδρομή μεταξύ δυο σημείων. Ανάλογα με τις επιλογές που έχει κάνει ο χρήστης, μπορεί κατά μήκους της διαδρομής να δει και διάφορα προσωπικά αξιοθέατα. Αυτό που θα πρέπει να σημειωθεί είναι το εξής. Κάθε φορά που καλείται η MakeRoute από το κυρίως πρόγραμμα δημιουργεί και μια νέα διαδρομή, η οποία είναι τμήμα της διαδρομής που δημιουργήθηκε την πρώτη φορά που έγινε κλήση της κλάσης για την συγκεκριμένη διαδρομή. Κάθε φορά η διαδρομή χωρίζεται σε segments (τμήματα). Σε κάθε κίνηση, η τρέχουσα θέση του χρήστη μεταφέρεται στο επόμενο segment, ώστε να φαίνεται ότι ο χρήστης προχώρησε πάνω στην διαδρομή που όρισε. Για να γίνει σωστά η παρουσίαση της κίνησης, θα πρέπει να έχουμε κρατήσει τον αριθμό των τμημάτων της διαδρομής που δημιουργήθηκε, όταν κλήθηκε η κλάση για πρώτη φορά για την συγκεκριμένη διαδρομή. Οι μεταβλητές που επηρεάζονται από το αν η κλάση καλείται να δημιουργήσει μια νέα διαδρομή ή μια διαδρομή που είναι τμήμα της διαδρομής που είχε ορίσει ο χρήστης είναι οι εξής : started : μεταβλητή τύπου Integer. Η τιμή της δίνεται από το κυρίως πρόγραμμα, και η τιμή που έχει όταν η κλάση καλείται να δημιουργήσει μια νέα διαδρομή είναι το 0. Όταν η συνάρτηση της κλάσης εκτελεστεί έστω και μια φορά, τότε η τιμή της γίνεται 1. Αν η τιμή της είναι 0, τότε είναι η πρώτη φορά που εκτελείται η συνάρτηση για την συγκεκριμένη διαδρομή, και η τρέχουσα θέση του χρήστη δίνεται από το κυρίως πρόγραμμα. Αν είναι ίση με 1, τότε έχει ξαναεκτελεστεί η συνάρτηση για την συγκεκριμένη διαδρομή, οπότε η τρέχουσα θέση του χρήστη δίνεται από την ίδια την συνάρτηση. 129

130 used: μεταβλητή τύπου Integer. Η αρχική της τιμή είναι 0. Όταν η συνάρτηση της κλάσης εκτελεστεί έστω και μια φορά, γίνεται 1. Η μεταβλητή αυτή χρησιμοποιείται αργότερα από το κυρίως πρόγραμμα, για να γίνει έλεγχος αν έχει εκτελεστεί η συνάρτηση της κλάσης, ώστε να δει αν έχει αλλάξει η θέση του χρήστη. Αν είναι 1, σημαίνει ότι η τρέχουσα θέση του χρήστη έχει αλλάξει. nmapsbool: μεταβλητή τύπου Boolean. Η συγκεκριμένη μεταβλητή χρησιμοποιείται για να γίνεται έλεγχος για αν έχει εκτελεστεί έστω και μια φορά η συνάρτηση της κλάσης για την συγκεκριμένη διαδρομή. Ο σκοπός αυτής της μεταβλητής είναι διαφορετικός από την μεταβλητή used. Αν η τιμή της είναι false, τότε είναι η πρώτη φορά που εκτελείται ο κώδικας για την συγκεκριμένη διαδρομή, οπότε κρατάμε τον αριθμό των segments της διαδρομής (στην μεταβλητή nmaps) και αλλάζει η τιμή της. Αν τώρα η τιμή της είναι True, σημαίνει ότι δεν είναι η πρώτη φορά που εκτελείται ο κώδικας για την συγκεκριμένη διαδρομή, και δεν εκτελείται κάποιος κώδικας. Κάθε φορά που ο χρήστης ορίζει μια νέα διαδρομή, η τιμή της μετατρέπεται σε false από το κυρίως πρόγραμμα. Πριν ξεκινήσει η εκτέλεση του κώδικα για δημιουργία της κίνησης, γίνεται έλεγχος της μεταβλητής started, ώστε να δωθούν οι κατάλληλες τιμές στις συντεταγμένες του αρχικού σημείου και ορίζονται και οι συντεταγμένες του τελικού σημείου. Εδώ παρουσιάζεται και ένας διαφορετικός τρόπος αποθήκευσης τιμών από το κυρίως πρόγραμμα. Ενώ για όλες τις άλλες μεταβλητές ο ορισμός των τιμών τους γίνεται μέσα από τον κώδικα του κυρίως προγράμματος, τώρα οι τιμές αποθηκεύονται μέσα στην κλάση, χρησιμοποιώντας το κυρίως πρόγραμμα. Αυτός ο τρόπος μπορεί να χρησιμοποιηθεί μόνο εάν η κλάση χρησιμοποιείται από μια φόρμα. Αν χρησιμοποιούνταν από περισσότερες δεν είναι δυνατό να παραχωρηθούν τιμές με αυτό τον τρόπο, που παρουσιάζεται στην συνέχεια. 130

131 If started = 0 Then latalongs(0).latitude = Map.latalongs(0).Latitude latalongs(0).longitude = Map.latalongs(0).Longitude latalongs(1).latitude = Map.latalongs(1).Latitude latalongs(1).longitude = Map.latalongs(1).Longitude started = 1 Else latalongs(0).latitude = newlatlongs(0).latitude latalongs(0).longitude = newlatlongs(0).longitude latalongs(1).latitude = RouteMap.latalongs(1).Latitude latalongs(1).longitude = RouteMap.latalongs(1).Longitude End If Η μεταβλητή newlatlongs είναι τοπικής εμβέλειας, ενώ ο τρόπος λειτουργίας της θα παρουσιαστεί στην συνέχεια. Στην συνέχεια γίνεται έλεγχος της μεταβλητής kindofroute, ώστε να οριστεί το είδος της διαδρομής που θα χρησιμοποιηθεί για τη δημιουργία της διαδρομής. Η παράμετρος SegmentPreference είναι το είδος της διαδρομής. Αν επιλέξουμε την παράμετρο Shortest τότε θα δημιουργηθεί η συντομότερη, με βάση την απόσταση, διαδρομή μεταξύ των σημείων, ενώ αν επιλεγεί η Quickest θα δημιουργηθεί η γρηγορότερη διαδρομή, με βάση τον χρόνο μετάβασης από την αρχή προς το τέλος. 131

132 If kindofroute = True Then route = routeservice.calculatesimpleroute(latalongs, "MapPoint.EU", SegmentPreference.Shortest) Else route = routeservice.calculatesimpleroute(latalongs, "MapPoint.EU", SegmentPreference.Quickest) End If Αφού γίνει και ο έλεγχος της nmapsbool, ξεκινάει η εκτέλεση του κώδικα δημιουργίας της διαδρομής. Υπάρχουν τρεις περιπτώσεις : 1. να μην εμφανιστεί κανένα αξιοθέατο κατά μήκος της διαδρομής 2. να εμφανιστούν όλα τα προσωπικά αξιοθέατα του χρήστη 3. να εμφανιστούν εκείνα τα προσωπικά αξιοθέατα του χρήστη, τα οποία απέχουν κάποια συγκεκριμένη απόσταση από τον χρήστη. Η επιλογή της αντίστοιχης περίπτωσης γίνεται με βάση την τιμή της μεταβλητής pois. Γενικά η κίνηση χωρίζεται, και για τις τρεις προηγούμενες περιπτώσεις, σε τρία τμήματα: 1. στην κίνηση που γίνεται από την αρχή μέχρι το δεύτερο από το τέλος τμήμα 2. στην κίνηση που πραγματοποιείται στο προτελευταίο τμήμα 3. και όταν ο χρήστης έχει φτάσει στο τέλος της διαδρομής. 132

133 Περίπτωση 1 (pois=0) Κίνηση από την αρχή μέχρι το δεύτερο από το τέλος τμήμα Σε αυτή την περίπτωση ο κώδικας που εκτελείται είναι ο ακόλουθος If (position < nmaps - 2) Then pushpins(0) = New Pushpin() pushpins(0).icondatasource = "MapPoint.Icons" pushpins(0).iconname = "0" pushpins(0).latlong = route.itinerary.segments(0).directions(0).latlong pushpins(0).label = "Είστε Εδώ" newlatlongs(0) = route.itinerary.segments(0).directions(1).latlong currentposition(0) = route.itinerary.segments(0).directions(0).latlong views(0) = route.itinerary.segments(0).directions(0).view.byheightwidth views(0).centerpoint = route.itinerary.segments(0).directions(0).latlong 133

134 Οι δυο μεταβλητές που παρουσιάζουν ενδιαφέρον είναι οι newlatlongs και currentposition. Στην πρώτη αποθηκεύουμε τις συντεταγμένες του επόμενου τμήματος της διαδρομής, ώστε την επόμενη φορά που θα τρέξει η κλάση για την ίδια διαδρομή, να χρησιμοποιηθούν ως η αρχή της διαδρομής. Στην δεύτερη αποθηκεύουμε τις συντεταγμένες της τρέχουσας θέσης του χρήστη, ώστε αν σταματήσει ο χρήστης την τρέχουσα διαδρομή, να υπάρχουν αποθηκευμένες οι συντεταγμένες του σημείου στο οποίο έφτασε, για να χρησιμοποιηθούν αργότερα αν ο χρήστης θελήσει να δει κάποια άλλη διαδρομή. Στην μεταβλητή views(0) αποθηκεύουμε το σημείο με βάση το οποίο θα δημιουργηθεί ο χάρτης. Το σημείο αυτό είναι το πρώτο τμήμα της διαδρομής που δημιουργείται σε κάθε κλήση της κλάσης (route.itinerary.segments(0).directions(0).latlong). Αυτό που θα πρέπει να προσεχθεί είναι η εντολή views(0).centerpoint = route.itinerary.segments(0).directions(0).latlong. Με αυτή την εντολή το κέντρο του χάρτη γίνεται η τρέχουσα θέση του χρήστη. Αυτή η γραμμή κώδικα έχει γραφτεί γιατί με την κλάση ViewByHeightWidth το κέντρο του χάρτη είναι το μέσο της διαδρομής που ορίζεται από την τρέχουσα θέση και το επόμενο τμήμα. Αν η απόσταση μεταξύ της τρέχουσας θέσης και του επόμενου τμήματος είναι μικρή, δεν υπάρχει κάποια διαφορά στην εμφάνιση του χάρτη. Εμφανίζεται δηλαδή ο ίδιος χάρτης είτε γραφεί η συγκεκριμένη εντολή είτε όχι. Αν όμως η απόσταση είναι μεγάλη τότε ο χάρτης που εμφανίζεται έχει σημαντικές διαφορές όπως φαίνεται και από τις επόμενες. 134

135 Η αριστερή εικόνα δείχνει πως φαίνεται ο χάρτης της διαδρομής όταν έχουμε ορίσει center point και έχουμε θέσει και ένα zoom. Αντίθετα, η επόμενη εικόνα δείχνει τον χάρτη της ίδιας διαδρομής, στην οποία όμως δεν έχουμε ορίσει ούτε center point ούτε zoom. Όπως γίνεται αντιληπτό και από τις δυο εικόνες, κάθε τρόπος αναπαράστασης έχει τα πλεονεκτήματα και τα μειονεκτήματά του. Στην πρώτη περίπτωση ο χρήστης βλέπει τις οδούς γύρω από το σημείο στο οποίο βρίσκεται, ενώ στην δεύτερη περίπτωση μπορεί να δει γενικά όλη την διαδρομή που είναι να διασχίσει. Εικόνα με center point και zoom Εικόνα χωρίς center point και χωρίς zoom Η επιλογή που έχουμε κάνει είναι η πρώτη μορφή. Ο λόγος είναι ότι στην πρώτη περίπτωση φαίνεται πιο ρεαλιστική η διαδρομή, αφού σε θεωρητικό επίπεδο ο χρήστης δεν ξέρει ποια διαδρομή θα ακολουθήσει, αλλά θέλει να βλέπει τις οδούς που βρίσκονται δίπλα του όσο πραγματοποιεί την βόλτα του. 135

136 Κίνηση που πραγματοποιείται στο προτελευταίο τμήμα Στην δεύτερη περίπτωση της κίνησης εκτελείται ο ίδιος κώδικας με προηγουμένως, με την μόνη διαφορά να συναντάται στην επόμενη γραμμή κώδικα : newlatlongs(0) =route.itinerary.segments(1).directions(0).latlong Επειδή, όπως αναφέρθηκε προηγουμέως, στην δεύτερη περίπτωση ο χρήστης βρίσκεται πριν ένα βήμα πριν το τέλος της διαδρομής, το επόμενο segment είναι το τέλος της διαδρομής. Οπότε πρέπει να δώσουμε στην newlatlongs(0) τις συντεταγμένες του τέλους τις διαδρομής. Επειδή όταν ορίσαμε την διαδρομή, δώσαμε τις συντεταγμένες μόνο τις αρχής και του τέλους, το Segments(1) αντιπροσωπεύει το σημείο στο οποίο τελειώνει η διαδρομή Τέλος διαδρομής Στην τρίτη και τελευταία περίπτωση, όπου ο χρήστης είναι στο τέλος της διαδρομής, δεν υπάρχει εντολή απόδοσης συντεταγμένων στην μεταβλητή newlatlongs(0), αφού δεν θα υπάρξει επόμενη κίνηση πάνω στην διαδρομή. Επιπλέον στις μεταβλητές views(0) και pushpins(0) δίνονται οι συντεταγμένες του τέλους της διαδρομής (route.itinerary.segments(1).directions(0).latlong ), ενώ παράλληλα αλλάζει και το χρώμα του pushpin (pushpins(0).iconname = "1") και από μπλε που ήτανε πριν γίνεται κόκκινο. Συν τοις άλλοις η μεταβλητή finish γίνεται True, ώστε το κυρίως πρόγραμμα να αντιληφθεί ότι η κίνηση έφτασε στο τέλος της. 136

137 Περίπτωση 2 (pois=1) Εάν τώρα το pois είναι ίσο με 1, δηλαδή ο χρήστης θέλει να εμφανιστούν όλα κατά μήκος της διαδρομής όλα τα προσωπικά του αξιοθέατα, εκτελείται ο κώδικας που περιγράφθηκε προηγουμένως, με την προσθήκη γραμμών κώδικα ώστε να προστεθούν στον χάρτη και το σύνολο των προσωπικών αξιοθεάτων του χρήστη. Οι διαφοροποιήσεις που υπάρχουν είναι στην δήλωση του μεγέθους του pushpins = New Pushpin(pushnums) {}, και ότι σε κάθε από τις τρεις περιπτώσεις προστίθεται και ο αντίστοιχος κώδικας ορισμού των παραμέτρων των επιπλέων pushpins. For i = 1 To pushnums pushpins(i) = New Pushpin() pushpins(i).icondatasource = "MapPoint.Icons" pushpins(i).iconname = "1" pushpins(i).latlong = pushlatlongs(i - 1) pushpins(i).label = names(i - 1) Next Η μεταβλητή pushlatlongs περιέχει τις συντεταγμένες των προσωπικών αξιοθεάτων, οι οποίες δίνονται μέσα από το κυρίως πρόγραμμα. Αντίστοιχα οι μεταβλητή names περιέχει τα ονόματα των αξιοθεάτων, ώστε ο χρήστης να γνωρίζει τι προβάλλεται στον χάρτη. 137

138 Περίπτωση 3 (pois=2) Όταν τώρα το pois είναι ίσο με 2, σημαίνει ότι ο χρήστης θέλει τα αξιοθέατα που εμφανίζονται να βρίσκονται σε μια συγκεκριμένη απόσταση από την θέση του. Μια διαφορά που έχει ο κώδικας σε αυτή την περίπτωση, με την περίπτωση που το pois είναι 1, είναι ότι στην δεύτερη περίπτωση τα αξιοθέατα (συντεταγμένες και ονόματα) δίνονται κατευθείαν από το κυρίως πρόγραμμα, ενώ σε αυτή την περίπτωση γίνεται αναζήτηση των αξιοθεάτων μέσα στην συνάρτηση της κλάσης. Ο λόγος είναι ότι επειδή ο χρήστης θέλει τα αξιοθέατα να βρίσκονται σε συγκεκριμένη απόσταση από αυτόν, μπορεί σε κάθε διαφορετική θέση που θα βρίσκεται τα αξιοθέατα που καλύπτουν τις προϋποθέσεις να αλλάζουν. Οπότε ο έλεγχος της απόστασης μεταξύ αξιοθεάτων και θέσης χρήστη πρέπει να γίνεται μέσα στην συνάρτηση, ώστε σε κάθε διαφορετική θέση που θα βρίσκεται ο χρήστης, να προβάλλονται τα σωστά αξιοθέατα. Γιαυτό το λόγο ο έλεγχος πρέπει να γίνεται κάθε φορά που εκτελείται η συνάρτηση, και όταν φυσικά το pois=2. Ξεκινώντας, γίνεται μετατροπή της απόστασης που έχει πληκτρολογήσει ο χρήστης (distance) σε Double, και ο αριθμός που προκύπτει αποθηκεύεται στην apostasi. Η apostasi είναι σε μέτρα. Θα πρέπει να μετατραπεί σε μοίρες, ώστε να μπορούμε να κάνουμε πράξεις με τις συντεταγμένες των αξιοθεάτων και της τρέχουσας θέσης του χρήστη. Για το λόγο αυτό, αρχικά, διαιρείται με το , που είναι περίπου η απόσταση μεταξύ δυο βαθμών γεωγραφικού μήκους. Με την διαίρεση αυτή προκύπτει ένας δεκαδικός αριθμός, ο οποίος δείχνει, σε μοίρες, την μέγιστη διαφορά που θα πρέπει να έχουν τα αξιοθέατα με την θέση του χρήστη, όσον αφορά την latitude, ώστε να είναι μέσα στην απόσταση που έχει θέσει ο χρήστης και να απεικονιστούν στον χάρτη. Στην συνέχεια η apostasi διαιρείται και με το 95506, που είναι περίπου η απόσταση μεταξύ δυο βαθμών γεωγραφικού πλάτους. Ο αριθμός που προκύπτει χρησιμοποιείται για έλεγχο του longtitude. 138

139 apostasi = Convert.ToDouble(distance) longtitude = apostasi / latitude = apostasi / Στην συνέχεια συνδεόμαστε με την βάση poi, και επιλέγουμε τα αξιοθέατα εκείνα που βρίσκονται σε απόσταση μικρότερη από αυτή που έθεσε ο χρήστης. Dim da As SqlCeDataAdapter = New SqlCeDataAdapter("SELECT poi_name, long,lat FROM stoixeia WHERE " & Math.Abs(latalongs(0).Longitude - apostasi) & " < long AND " & Math.Abs(latalongs(0).Latitude - apostasi) & " < lat ", cn) Η εντολή αυτή εκτελείται δυο φορές. Την πρώτη φορά μετράμε πόσα από τα αξιοθέατα τηρούν το συγκεκριμένο κριτήριο, και κρατάμε τον αριθμό τους, ώστε να ορίσουμε το μέγεθος του πίνακα pushlatlongs. Στην δεύτερη εκτέλεση αποθηκεύουμε το όνομα του αξιοθέατου στον πίνακα names και τις συντεταγμένες του στον pushlatlongs. Ο κώδικας στην συνέχεια είναι πανομοιότυπος με την περίπτωση που το pois ισούται με 1. Στην συνέχεια δίνουμε εντολή για δημιουργία του χάρτη. Στην παράμετρο zoom της mymapspec έχουμε δώσει τιμή ίση 0.2, ώστε σε περιπτώσεις που τα τμήματα που δείχνει είναι πολύ μεγάλα, ο χάρτης να εστιάζει στην τρέχουσα θέση του χρήστη. 139

140 Κλάση MakeRoutePois Η κλάση MakeRoutePois δημιουργεί μια διαδρομή μεταξύ της τρέχουσας θέσης του χρήστη και ενός γενικού αξιοθεάτου, το οποίο έχει επιλέξει ο χρήστης. Η διαφορά της με την MakeRoute είναι στον τρόπο εμφάνισης του χάρτη. Ενώ στην MakeRoute το κέντρο της εικόνας είναι η τρέχουσα θέση του χρήστη, με αποτέλεσμα να μην φαίνεται όλη η διαδρομή, αλλά ένα μικρό τμήμα της, εδώ φαίνεται όλη η διαδρομή. O λόγος είναι ότι σε αυτή την περίπτωση δεν χρησιμοποιούμε κλάση View για τον τρόπο δημιουργίας του χάρτη. Αλλά δίνουμε στην mapspec δίνουμε μόνο την διαδρομή που δημιουργήσαμε. Οπότε δημιουργείται ένας χάρτης, που περιλαμβάνει το σύνολο της διαδρομής. Η κλάση ViewByBoundingLocations δημιουργεί ένα χάρτη με βάση τα σημεία που ορίσαμε. Αν χρησιμοποιούσαμε την συγκεκριμένη κλάση, υπήρχε η περίπτωση να μην εμφανιστεί το σύνολο της διαδρομής. Αυτό θα εξαρτιόταν από την ίδια την διαδρομή. Αν δηλαδή είχαμε ορίσει μια διαδρομή με περίεργη πορεία, ενώ η αρχή και το τέλος της θα ήτανε σχετικά κοντά, τότε δεν θα εμφανιζόταν όλη η διαδρομή. Στην μεταβλητή mylocations αποθηκεύουμε τις συντεταγμένες της αρχής και του τέλους της διαδρομής. Θα μπορούσαμε, αν θέλαμε, να ορίζαμε και άλλα σημεία, από τα οποία θα θέλαμε να περάσει η διαδρομή. Στην συνέχεια παρουσιάζεται ένας διαφορετικός τρόπος δημιουργίας της διαδρομής, από αυτόν με τον οποίο δημιουργείται η διαδρομή στην MakeRoute. Στην routesegmentsspec ορίζουμε τα τμήματα, τα οποία θέλουμε εμείς να χωριστεί η διαδρομή. Αυτό όμως δεν σημαίνει ότι το πρόγραμμα δεν θα χωρίσει τα τμήματα που ορίσαμε εμείς σε μικρότερα. Αφού δώσουμε τις συντεταγμένες των σημείων, στην συνέχεια μπορούμε να ορίσουμε το είδος της διαδρομής ανάμεσα στα τμήματα. Αν για παράδειγμα έχουν δώσει τρία σημεία, μπορούμε να ορίσουμε ότι από το πρώτο μέχρι το δεύτερο η διαδρομή να είναι τύπου Shortest, ενώ από το δεύτερο μέχρι το τρίτο Quickest. Στην συγκεκριμένη περίπτωση έχουμε ορίσει δυο σημεία, όπότε πρέπει να ορίσουμε να έχουν ίδιο είδος διαδρομής. 140

141 routesegmentsspec(0).options.preference = SegmentPreference.Quickest routesegmentsspec(1).options.preference = SegmentPreference.Quickest Στην συνέχεια στην μεταβλητή routespec περνάμε τον πίνακα routesegmentsspec και ορίζουμε τον χάρτη στον οποίο θα γίνει η αναζήτηση. Η εντολή με την οποία δημιουργείται η διαδρομή είναι η : myroute = RouteService.CalculateRoute(routeSpec) ενώ η αντίστοιχη που χρησιμοποιήθηκε στην κλάση MakeRoute ήτανε η route = routeservice.calculatesimpleroute(latalongs, "MapPoint.EU", SegmentPreference.Shortest) Όπως γίνεται αντιληπτό, και οι δυο μορφές δημιουργίας μιας διαδρομής, χρησιμοποιούνε τα ίδια στοιχεία, με την μόνη διαφορά ότι δίνονται με διαφορετικό τρόπο. Όπως θα δούμε και στο κυρίως πρόγραμμα, ο χρήστης έχει την δυνατότητα να δει και πληροφορίες σχετικά με την διαδρομή που επέλεξε (οδηγίες και απόσταση μεταξύ των διαφόρων τμημάτων). Επειδή η μέτρηση της απόστασης θέλουμε να γίνεται σε χιλιόμετρα, πρέπει να γραφτούν οι επόμενες σειρές κώδικα : RouteService.UserInfoRouteHeaderValue = New UserInfoRouteHeader RouteService.UserInfoRouteHeaderValue.DefaultDistanceUnit = DistanceUnit.Kilometer Στην συνέχεια δημιουργείται η διαδρομή και δημιουργείται και ο χάρτης, ο οποίος επιστρέφεται στο κυρίως πρόγραμμα. 141

142 4.4.2 Κυρίως Πρόγραμμα Φόρμα Εισαγωγής Όταν τρέξει η εφαρμογή, ο χρήστης αντικρίζει την επόμενη εικόνα : Αρχική Φόρμα Αν είναι νέος χρήστης, μπορεί να πατήσει το πλήκτρο Register, και να δημιουργήσει έναν λογαριασμό. 142

143 Αν εισάγει τα στοιχεία του, πατώντας το πλήκτρο Login, γίνεται ένας έλεγχος των στοιχείων του. Αρχικά πραγματοποείται έλεγχος για το αν έχει δώσει username και password. Μήνυμα μη εισαγωγής Username Μήνυμα μη εισαγωγής Password Αν έχει εισάγει τα στοχεία του, τότε ελέγχεται για το αν υπάρχει χρήστης με το συγκεκριμένο username και password. 143

144 Επειδή η κινητή βάση είναι κενή, γίνεται ένας συγχρονισμός μεταξύ της κινητής βάσης και της βάσης που βρίσκεται στον server. _replication.host = txtusername.text _replication.db = "ID" _replication.publication = publication Try _replication.createreplicationinstance.reinitializesubscriptio n(true) _replication.createreplicationinstance.synchronize() Catch ex As Exception _replication.createreplicationinstance.synchronize() End Try Εάν η εφαρμογή έχει ξανατρέξει στην συγκεκριμένη συσκευή, τότε έχει κρατημένο το hostname (host) που χρησιμοποίησε την προηγούμενη φορά ο χρήστης. Οπότε για να μην χτυπήσει η εφαρμογή, σε περίπτωση που γίνεται είσοδος άλλου χρήστη, είναι απαραίτητο να υπάρχει η εντολή _replication.createreplicationinstance.reinitializesubscriptio n(true) Εάν είναι η πρώτη φορά, τότε δεν πρέπει να υπάρχει αυτή η εντολή, γιατί η συσκευή δεν έχει κρατημένο κάποιο hostname. Αν εκτελεστεί αυτή η εντολή το πρόγραμμα θα χτυπήσει. 144

145 Με τη χρήση του Try αποφεύγουμε τα προβλήματα και στις δυο περιπτώσεις. Αρχικά δοκιμάζει να κάνει merge replication, με την προϋπόθεση ότι δεν είναι η πρώτη φορά. Αν είναι η πρώτη φορά τότε εκτελείται ο αντίστοιχος κώδικας που βρίσκεται στο Catch. Αφού γίνει ο συγχρονισμός, ελέγχεται η βάση για το αν έχουν μεταφερθεί στοιχεία. Αν δεν έχουν μεταφερθεί και η βάση είναι κενή, σημαίνει ότι το username που έδωσε ο χρήστης είναι λάθος (αφού σαν hostname χρησιμοποιούμε το username του). Τότε εμφανίζεται το επόμενο μήνυμα. Μήνυμα λάθους εισαγωγής Username 145

146 Αν έχει στοιχεία η βάση, τότε ελέγχεται για το αν το password είναι σωστό. Αν δεν είναι εμφανίζεται ένα μήνυμα λάθους. Μήνυμα λάθους εισαγωγής Password 146

147 Αν τώρα τα στοιχεία είναι σωστά, γίνεται συγχρονισμός μεταξύ της κινητής βάσης poi και της αντίστοιχης βάσης του server. Ο συγχρονισμός γίνεται με τον ίδιο τρόπο, όπως και για την βάση ID. O λόγος που δεν πραγματοποιείται ο συγχρονισμός των βάσεων ταυτόχρονα έχει να κάνει με τον χρόνο που απαιτείται για να πραγματοποιηθεί ο συγχρονισμός και την περίπτωση λάθους εισαγωγής στοιχείων από τον χρήστη. Για τον συγχρονισμό και τον δυο βάσεων θα απαιτούνταν διπλάσιος χρόνος. Παράλληλα, εάν ο χρήστης έδινε λάθος στοιχεία, δεν θα είχε νόημα να γινότανε προσπάθεια συγχρονισμού και της βάσης poi. Οπότε πρώτα είμαστε σίγουροι ότι ο χρήστης έχει δώσει τα σωστά του στοιχεία, και στην συνέχεια γίνεται και ο δεύτερος συγχρονισμός. Σε όλες τις προηγούμενες περιπτώσεις, όταν γίνεται συγχρονισμός βάσεων εμφανίζεται το επόμενο μήνυμα στον χρήστη. Μήνυμα εκτέλεσης συγχρονισμού βάσεων 147

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

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

150 φόρμα Αφού καταχωρηθούν τα στοιχεία του στην βάση ID, εμφανίζεται η επόμενη Register : Βήμα 2, Καταχώρηση Αρχής Διαδρομής Όπως έχουμε πει, η εφαρμογή χρησιμοποιείται τοπικά. Αυτό σημαίνει ότι δεν μπορεί να συνδεθεί με κάποιο δορυφόρο, ώστε να εντοπίσει την τρέχουσα θέση του χρήστη, ή να εμφανίσει την κίνηση που θα πραγματοποιεί. Για τον λόγο αυτό, θα πρέπει να έχει καταχωρηθεί στο σύστημα μια, θεωρητική, αρχική θέση, ώστε κάθε φορά που ο χρήστης θα τρέχει την εφαρμογή, να θεωρείται ότι αυτό το σημείο είναι, εκείνη την στιγμή, η τρέχουσα θέση του. Το πλήκτρο Ακύρωση ακυρώνει όλη την διαδικασία της δημιουργίας νέου λογαριασμού, και μεταφέρει το χρήστη στην φόρμα εισαγωγής. Αφού εισάγει το την διεύθυνση που επιθυμεί, και πατήσει το πλήκτρο Προσθήκη, με την βοήθεια της generalpois1 βρίσκονται οι συντεταγμένες 150

151 του σημείου, και γίνεται καταχώρηση του σημείου (διεύθυνση, ταχυδρομικό κώδικας και συντεταγμένες) στον πίνακα stoixeia της βάση poi, με το όνομα Arxi. Εάν η καταχώρηση είναι επιτυχής εμφανίζεται η επόμενη εικόνα : Register : Βήμα 2, Καταχώρηση Τέλους Διαδρομής Η μια από τις επιλογές για εύρεση διαδρομής, όπως θα δούμε και στην συνέχεια, είναι η Προκαθορισμένη. Σε αυτή την διαδρομή η αρχή της είναι το σημείο Arxi και το τέλος της το σημείο Telos που καταχωρείται τώρα. Για την καταχώρηση του σημείου γίνεται ακριβώς η ίδια διαδικασία με πρίν, με την μόνη διαφορά ότι στην αρχή γίνεται ένας έλεγχος για να διαπιστωθεί αν τα σημεία Arxi και Telos είναι διαφορετικά. Για να ολοκληρωθεί η δημιουργία του νέου λογαριασμού, ο χρήστης θα πρέπει να επιλέξει και ποιες από τις γενικές κατηγορίες τον ενδιαφέρουν. 151

152 Αφού επιλέξει τις κατηγορίες που θέλει, πατάει το κουμπί που Καταχώρηση που υπάρχει στην φόρμα, και εμφανίζεται το επόμενο Panel, στο οποίο ο χρήστης μπορεί να επιλέξει αν θέλει να ολοκληρωθεί η διαδικασία δημιουργίας. Αν πατήσει το κουμπί Nαι τότε συχρονίζονται οι βάσεις και αποθηκεύονται τα δεδομένα στις βάσεις που βρίσκονται στον server. Αν πατήσει το κουμπί Οχι, τότε διαγράφονται όλα τα στοιχεία από τις βάσεις και εμφανίζεται η φόρμα εισαγωγής Φόρμα επιλογών Όταν ο χρήστης κάνει Login ή ολοκληρώσει την διαδικασία του Register, μεταφέρεται στην επόμενη φόρμα. Φόρμα Επιλογών 152

153 Στο συγκεκριμένο μενού δίνονται οι επιλογές που φαίνονται στην εικόνα, ενώ υπάρχει και το πλήκτρο Logout, με το οποίο διαγράφονται τα στοιχεία που υπάρχουν στις βάσεις της συσκευής, και ο χρήστης επιστρέφει στην προηγούμενη φόρμα. Το συγκεκριμένο πλήκτρο υπάρχει και στις επόμενες φόρμες, στην ίδια θέση, κάνοντας την ίδια δουλειά Φόρμα ΜΑΡ Εάν ο χρήστης επιλέξει τους χάρτες από την προηγούμενη φόρμα, ο χρήστης μεταφέρεται στην φόρμα Map. Στην συγκεκριμένη φόρμα γίνεται όλη η δουλειά της εφαρμογής σχετικά με τους χάρτες. Στην συγκεκριμένη φόρμα δίνονται δυο επιλογές : 1. Ορισμός μιας διαδρομής για κίνηση 2. Απεικόνιση της τρέχουσας θέσης του χρήστη. Ο λόγος που και οι δυο επιλογές είναι στην ίδια φόρμα, έχει να κάνει με την σωστή απεικόνιση της τρέχουσας θέσης του χρήστη και το γεγονός ότι όταν πραγματοποιηθεί μια κίνηση, η θέση του χρήστη μεταβάλλεται μέσω της κλάσης makeroute. Όταν τρέχει το πρόγραμμα για πρώτη φορά, η τρέχουσα θέση του χρήστη είναι το σημείο Arxi, το οποίο ο χρήστης δήλωσε κατά την εγγραφή του στο σύστημα. Αν τώρα πραγματοποιήσει μια κίνηση, τότε με την χρήση της κλάσης makeroute, η τρέχουσα θέση αλλάζει. Αν στην συνέχεια ο χρήστης θελήσει να δει μόνο την τρέχουσα θέση του, η εφαρμογή θα πρέπει να του δείξει την νέα θέση του, η οποία προέκυψε από την makeroute. 153

154 Αν η κίνηση σε διαδρομή και η εύρεση της τρέχουσας θέσης ήτανε σε δυο διαφορετικές φόρμες, τότε θα έπρεπε να βρεθεί κάποιος τρόπος ώστε να μπορεί η φόρμα, στην οποία θα γινόταν η απεικόνιση της θέσης του χρήστη, να ελέγξει την συνάρτηση makeroute, ώστε να διαπιστωθεί αν έχει τρέξει, με αποτέλεσμα να έχει αλλάξει η τρέχουσα θέση του χρήστη. Όταν δηλώνουμε σε μια φόρμα μια κλάση, ώστε αυτή να χρησιμοποιηθεί από την φόρμα, πρέπει πάντα να δηλώνεται ως New. Αν είχαμε λοιπόν δυο διαφορετικές φόρμες, στις οποίες δηλώναμε την κλάση makeroute, το πρόβλημα που θα αντιμετωπίζαμε θα ήτανε το εξής. Έστω ότι χρησιμοποιούσαμε πρώτα την φόρμα εύρεσης μιας διαδρομής και πραγματοποιούσαμε κάποιες κινήσεις πάνω σε μια διαδρομή, οπότε η τρέχουσα θέση του χρήστη έχει αλλάξει από την αρχική. Αν τώρα μεταφερόμασταν στην φόρμα εύρεσης της θέσης, η οποία θα έτρεχε για πρώτη φορά, η νέα θέση του χρήστη θα χανότανε. Και αυτό γιατί, αφού η φόρμα θα έτρεχε για πρώτη φορά, θα αρχικοποιούσε όλες τις μεταβλητές που θα ήτανε δηλωμένες στην φόρμα, άρα και την makeroute, με συνέπεια να χανόταν η νέα θέση του χρήστη. Αντίθετα, αν γινότανε χρήση πρώτα της εύρεσης θέσης και μετά της κίνησης σε μια διαδρομή δεν θα παρουσιαζόταν κάποιο πρόβλημα, αφού πρώτα θα αρχικοποιούνταν η κλάση makeroute στην πρώτη φόρμα, και μετά θα χρησιμοποιόταν από την δεύτερη, με αποτέλεσμα όποιες αλλαγές και να γινότανε στην τρέχουσα θέση του χρήστη, να μπορούσαν να χρησιμοποιηθούν και για απεικόνιση της τρέχουσας θέσης. Μια άλλη μέθοδος που θα μπορούσαμε να χρησιμοποιήσουμε, ώστε η εύρεση θέσης και η κίνηση σε μια διαδρομή να είναι σε διαφορετικές κλάσεις, είναι με την χρήση της εντολής With End With, ώστε η φόρμα θέσης να παίρνει την θέση του χρήστη μέσω της φόρμας κίνησης. Αυτό όμως θα είχε ως συνέπεια μεγαλύτερο υπολογιστικό χρόνο κάθε φορά που θα ζητούσαμε την θέση μας, σε αντίθεση με τώρα που γίνεται πολύ πιο γρήγορα. Αντίθετα τώρα, έχουμε μια καθυστέρηση στην 154

155 φόρτωση της φόρμας, την πρώτη φορά, λόγω των πολλών αντικειμένων που έχει, αλλά στην συνέχεια δεν παρατηρείται κάποια επιπλέον καθυστέρηση. Για τους λόγους αυτούς και η κίνηση του χρήστη και η εύρεση και απεικόνιση της τρέχουσας θέσης του χρήστη, γίνεται μέσω της ίδιας φόρμας. Η φόρμα αποτελείται από ένα TabControl (TabControl1), στο οποίο υπάρχουν δεκαεφτά TabPages. Οι επιλογές που δίνονται είναι : 1. η απεικόνιση της θέσης, ενώ παράλληλα μπορούν να απεικονιστούν και διάφορα αξιοθέατα που θέλει ο χρήστης, είτε προσωπικά είτε γενικά. Παράλληλα μπορεί να βρει κάποια διαδρομή και να κινηθεί κατά μήκος αυτής της διαδρομής, είτε αυτή αφορά διαδρομή σχετικά με προσωπικά αξιοθέατα είτε σχετικά με γενικά αξιοθέατα. 2. εύρεση μιας διαδρομής, είτε προς το προκαθορισμένο σημείο ( Telos ), είτε προς κάποιο προσωπικό αξιοθέατο, από την λίστα αυτών που έχει δηλώσει, είτε προς κάποιο γενικό αξιοθέατο, το οποίο ανήκει σε μια από τις κατηγορίες που έχει δηλώσει. Κατά μήκος της διαδρομής μπορεί, αν το επιθυμεί να προβάλλονται και όλα ή μερικά από τα προσωπικά του αξιοθέατα, ενώ μπορεί να κινηθεί και με δυο διαφορετικούς τρόπους πάνω στην διαδρομή. Επιπλέον, σε οποιοδήποτε σημείο της διαδρομής, μπορεί να σταματήσει την κίνηση, και να αλλάξει τα προσωπικά αξιοθέατα που προβάλλονται, τον τρόπο κίνησης στην διαδρομή, ενώ μπορεί να βρει και διάφορα γενικά αξιοθέατα, να δει πληροφορίες σχετικά με τα γενικά αξιοθέατα και να αλλάξει την διαδρομή του και να κινηθεί σε μια διαδρομή που σχηματίζεται από την τρέχουσα θέση του προς ένα αξιοθέατο. 155

156 Εκτός από τα κουμπιά που υπάρχουν σε κάθε TabPage, έχουν προστεθεί και διάφορα πλήκτρα στο αριστερό πλήκτρο της συσκευής. Αυτά τα πλήκτρα εμφανίζονται ανάλογα με το TabPage που έχει εμφανιστεί, γιατί ο σκοπός τους και η λειτουργία τους είναι συνδεδεμένη με κάποια συγκεκριμένα TabPages. Πριν γίνει η περιγραφή του κώδικα που τρέχει στην συγκεκριμένη φόρμα, θα γίνει μια αναφορά σε κάποιες βασικές μεταβλητές που έχουν οριστεί. Οι μεταβλητές τύπου TabPage που έχουν οριστεί χρησιμοποιούνται για την αποθήκευση των TabPages που υπάρχουν στη φόρμα. Ο λόγος που αποθηκεύονται σε μεταβλητές, είναι διότι δεν προβάλλονται όλα τα Tabpages ταυτόχρονα στον χρήστη. Και επειδή όταν αφαιρείται ένα Tabpage χάνεται από το πρόγραμμα, είναι απαραίτητο να τα έχουμε σώσει κάπου, ώστε να μπορέσουμε να τα χρησιμοποιήσουμε στην συνέχεια. Στην συνέχεια υπάρχουν κάποιες μεταβλητές, όπως οι Dim mypois1 As Integer = 0 Dim mypois2 As Boolean = False Υπάρχουν ακόμη εννιά τέτοια ζευγάρια μεταβλητών. Οι συγκεκριμένες μεταβλητές χρησιμοποιούνται ανά ζευγάρια, οπότε για να γίνει κατανοητή η λειτουργία τους, θα περιγραφούν μαζί. Όπως αναφέραμε και προηγουμένως, επειδή δεν θέλουμε να εμφανίζονται όλα τα TabPages μαζί, αποθηκεύουμε κάθε TabPage σε μια μεταβλητή, ώστε να μπορούμε να το χρησιμοποιήσουμε ανά πάσα στιγμή. Αν ήδη έχουμε προσθέσει το TabPage στο TabControl, και προσπαθήσουμε να προσθέσουμε ξανά το ίδιο, το πρόγραμμα θα χτυπήσει. Για τον λόγο αυτό χρησιμοποιούμε μια μεταβλήτη τύπου Boolean και μια τύπου Integer, ώστε να ελέγχουμε αν υπάρχει το TabPage. Η μεταβλητή Boolean ελέγχει για το αν έχει προστεθεί, ενώ η Integer κράταει την θέση που έχει τοποθετηθεί. Επειδή αυτή η διαδικασία δεν αφορά το σύνολο των TabPages, αλλά μόνο δέκα από αυτά, γιαυτό ο αριθμός των ζευγαριών είναι δέκα και όχι 156

157 δεκαεφτά, όπως και τα TabPages. Και αυτό γιατί τα υπόλοιπα TabPages είτε εμφανίζονται μόνο μια φορά και μετά δεν ξαναεμφανίζονται (TabPage Οδηγίες ), είτε εμφανίζονται σε συγκεκριμένες θέσεις (στην θέση 0), οπότε δεν χρειάζεται να κρατάμε την θέση τους. Όταν η φόρμα φορτώνεται για πρώτη φορά, τρέχει η υπορουτίνα RouteMap_Load. Με την συγκεκριμένη υπορουτίνα η φόρμα παίρνει την εξής μορφή: TabPage Οδηγίες 157

158 Όπως διαπιστώνουμε, έχουν αφαιρεθεί όλα τα υπόλοιπα TabPages, ενώ αφαιρεί και τα πλήκτρα από το πλήκτρο Επιλογές, εκτός από το Αρχική. Πλήκτρα που υπάρχουν στο TabPage Οδηγίες Η αφαίρεση των TabPages γίνεται με τον παρακάτω κώδικα: For i = 1 To 16 TabControl1.TabPages.RemoveAt(17 - i) Next Σε κάθε εκτέλεση του For αφαιρείται το TabPage που βρίσκεται στην τελευταία θέση. Κατά την πρώτη εκτέλεση αφαιρείται το TabPage της θέσης 16 (17-1), στην δεύτερη εκτέλεση της θέσης 15 (17-2), και ούτω καθεξής μέχρι το i να πάρει την τιμή 16 και να αφαιρεθεί το TabPage στην πρώτη θέση. 158

159 Ο λόγος που η αφαίρεση των TabPages γίνεται από το τέλος προς την αρχή είναι ο εξής: Αν αφαιρούσαμε πρώτα το TabPage που βρίσκεται στην θέση 1, τότε το TabPage που βρισκόταν στην θέση 2 θα μετακινηθεί στην θέση 1, ενώ και τα υπόλοιπα TabPages μεταφέρονται μια θέση μπροστά. Η θέση 1 λοιπόν δεν αδειάζει, απλά αλλάζει το TabPage που είναι σε εκείνη την θέση, ενώ πλέον το TabControl έχει 16 στοιχεία και η τελευταία θέση που περιέχει ένα TabPage είναι η 15. Στην επόμενη εκτέλεση του For, αφαιρείται το TabPage που βρίσκεται στην θέση 2. Το TabPage της θέσης 1 παραμένει, ενώ πάλι όλα τα TabPages, εκτός αυτό που βρίσκεται στην θέση 1, μεταφέρονται μια θέση μπροστά. Γενικά σε κάθε εκτέλεση του For, τα TabPages που βρίσκονται σε θέσεις μικρότερες από τον δείκτη i δεν αφαιρούνται. Παράλληλα το πλήθος των TabPages του TabControl συνεχώς μειώνεται ενώ ο δείκτης i αυξάνεται, με άνω άκρο το 16, το οποίο είναι το αρχικό πλήθος των TabPages. Σε κάποιο σημείο λοιπόν, το σύστημα θα προσπαθήσει να αφαιρέσει TabPage από μια θέση του TabControl, στην οποία όμως δεν θα υπάρχει TabPage. Για να μην παρουσιαστεί τέτοιο πρόβλημα, η αφαίρεση των TabPages γίνεται από το τέλος προς την αρχή. Αντίθετα, τα κουμπιά αφαιρούνται με διαφορετικό τρόπο. Τα αφαιρούμε με χρήση του ονόματός τους. MenuItem1.MenuItems.Remove(MenubtnContinue) MenuItem1.MenuItems.Remove(MenubtnMaps) MenuItem1.MenuItems.Remove(MenubtnGpoisFind) MenuItem1.MenuItems.Remove(MenuNumInformation) MenuItem1.MenuItems.Remove(MenurouteInformation) 159

160 MenuItem1.MenuItems.Remove(MenuNewRoute) MenuItem1.MenuItems.Remove(MenubtnZoom) MenuItem1.MenuItems.Remove(MenubtnRouteChoice) MenuItem1.MenuItems.Remove(MenuKindRoute1Change) MenuItem1.MenuItems.Remove(MenubtnMapGPois) MenuItem1.MenuItems.Remove(MenubtnNewRoute) used = True Η μεταβλητή used χρησιμοποιείται από την φόρμα Pois. Όπως θα δούμε στην Pois ο χρήστης μπορεί να προσθέσει κάποια προσωπικά αξιοθέατα και να αλλάξει τις κατηγορίες των γενικών αξιοθεάτων. Αν χρησιμοποιηθεί πρώτα η φόρμα Map, τότε έχουν ήδη περαστεί τα στοιχεία στα διάφορα TreeView και ListBox που υπάρχουν στην φόρμα, οπότε θα πρέπει να τα στοιχεία που έχουν να προσαρμοστούν στα νέα δεδομένα που θέτει ο χρήστης μέσω της Poi. Aν χρησιμοποιηθεί πρώτα η Poi, τότε δεν χρειάζεται να γίνει κάποια αλλαγή, γιατί οι αλλαγές θα φορτωθούν αυτόματα, την πρώτη φορά που θα τρέξει η Map, μέσω της Load. Αφού ολοκληρωθεί η εκτέλεση της Map_Load, και εμφανιστεί η προηγούμενη εικόνα, μπορούμε να πατήσουμε το πλήκτρο Συνέχεια, ώστε να αφαιρεθεί το TabPage Οδηγίες και εμφανιστεί το TabPage Επιλογές. Γενικά η προσθαφαίρεση TabPages γίνεται με τις παρακάτω σειρές κώδικα. Στην παράμετρο Insert ορίζουμε την θέση στην οποία θέλουμε να τοποθετηθεί το TabPage, καθώς επίσης και το όνομά του. TabControl1.TabPages.RemoveAt(0) TabControl1.TabPages.Insert(0, choice) 160

161 Tο TabPage choice ( Επιλογές ) έχει την ακόλουθη μορφή TabPage Επιλογές Στο συγκεκριμένο TabPage Επιλογές εμφανίζονται δυο επιλογές, η Εύρεση Διαδρομής και η Εύρεση Θέσης, ενώ κάτω από κάθε επιλογή υπάρχουν και λίγες περιεκτικές οδηγίες για το τι ακριβώς μπορεί να κάνει ο χρήστης, αν επιλέξει την συγκεκριμένη επιλογή. Στο πλήκτρο Επιλογές υπάρχει ξανά μόνο το πλήκτρο Αρχική. Επιλέγοντας ο χρήστης ένα από τα δύο κουμπιά που εμφανίζονται στο TabPage, μεταφέρεται και στο αντίστοιχο μενού. 161

162 Εύρεση διαδρομής Η μια επιλογή που έχει ο χρήστης είναι η εύρεση μιας διαδρομής και η εικονική κίνηση πάνω στην διαδρομή. Έχοντας επιλέξει ο χρήστης το πλήκτρο Εύρεση Διαδρομής μεταφέρεται στο TabPage Μενού (TabRouteMenu ), ενώ προστίθεται και το πλήκτρο MenubtnMaps ( Επιλογή Χαρτών ) Φόρμα Map, Εύρεση Διαδρομής, TabPage Μενού Όπως φαίνεται και από την προηγούμενη εικόνα, υπάρχουν τρία διαφορετικά είδη διαδρομών, τα οποία μπορεί να δει ο χρήστης, και να πραγματοποιήσει κίνηση πάνω σε αυτές. 162

163 1. Προεπιλεγμένη διαδρομή Με την συγκεκριμένη επιλογή, ο χρήστης κινείται πάνω στην διαδρομή που δημιουργείται από την τρέχουσα θέση του προς το αξιοθέατο που δήλωσε ως Tέλος, όταν έκανε Register. 2. Προς Προσωπικό Αξιοθέατο Σε αυτή την περίπτωση, ο χρήστης μπορεί να επιλέξει ως τέλος της διαδρομής του ένα από τα προσωπικά του αξιοθέτα, τα οποία έχει καταχωρήσει στην βάση poi. Σε περίπτωση που δεν έχει καταχωρήσει κάποια αξιοθέατα, εμφανίζονται μόνο τα σημεία Αρχή και Τέλος, που έχει δηλώσει ο χρήστης κατά την διαδικασία του Register. 3. Προς Γενικό Αξιοθέατο Εδώ ο χρήστης επιλέγει αρχικά μια από τις κατηγορίες γενικών αξιοθεάτων, τις οποίες κατά το Register. Στην συνέχεια επιλέγει ένα από τα αξιοθέατα της κατηγορίας που επέλεξε, και πραγματοποιείται η κίνηση στην συγκεκριμένη διαδρομή. Εάν ο χρήστης πατήσει τώρα το πλήκτρο Eπιλογές, θα δει και το πλήκτρο Επιλογές Χαρτών, το οποίο είναι ένα μενού το οποίο περιέχει δυο άλλα πλήκτρα, τα Ορισμός Διαδρομής και Τρέχουσα Θέση μου. 163

164 Πλήκτρα που υπάρχουν στην Εύρεση Διαδρομής στο TabPage Μενού Με το πλήκτρο Ορισμός Διαδρομής, εμφανίζεται το συγκεκριμένο TabPage, ώστε ανά πάσα στιγμή να μπορεί ο χρήστης να επιλέξει κάποια διαδρομή. Επειδή το συγκεκριμένο πλήκτρο υπάρχει συνεχώς, ο κώδικας που τρέχει όταν πατηθεί το συγκεκριμένο πλήκτρο, αφαιρεί όλα τα TabPages που πιθανώς είναι ανοικτά και επαναφέρει όλη την φόρμα στην κατάσταση που είναι και την πρώτη φορά που τρέχει. Αυτό αφορά όλα τα αντικείμενα που βρίσκονται στα TabPages που αφορούν την εύρεση διαδρομής, αλλά και όλα εκείνα που αφορούν την εύρεση θέσης. Κάτι αντίστοιχο πραγματοποιεί και το πλήκτρο Τρέχουσα Θέση μου, μόνο που αυτό εμφανίζει το TabPage Μενού (TabPositionMenu), αλλά για την διαδικασία της εύρεσης της τρέχουσας θέσης. 164

165 Προκαθορισμένη Διαδρομή. Εάν ο χρήστης πατήσει το κουμπί Επιλογή (btnfindroute1) δίπλα στο Label Προεπιλεγμένη διαδρομή, τότε αφαιρείται το Tabpage Μενού και προστίθεται το Tabpage Διαδρομή (TabRoute1). Όπως φαίνεται και στην επόμενη εικόνα, υπάρχουν πληροφορίες για την αρχή και το τέλος της διαδρομής, δίνεται η δυνατότητα ο χρήστης να επιλέξει κάποια από τα προσωπικά του αξιοθέατα για προβολή, ενώ παράλληλα μπορεί να καθορίζει το είδος της διαδρομής (κίνηση με τα πόδια κίνηση με αυτοκίνητο). Φόρμα Map, Εύρεση Προκαθορισμένης Διαδρομής 165

166 Με το κουμπί Διαδρομή δημιουργείται η διαδρομή από την τρέχουσα θέση του χρήστη προς το σημείο Τελος. Ανάλογα με τις επιλογές που έχει κάνει, αν δηλαδή έχει προσθέσει κάποια αξιοθέατα ή όχι, όπως επίσης και από το είδος της διαδρομής, η διαδρομή που θα δημιουργηθεί μπορεί να έχει πολλές παραλλαγές. Αν θέλει να προσθέσει αξιοθέατα πατάει το κουμπί Επιλογή (btnpoisroute1), και εμφανίζεται το TabPage Προσωπικά Αξιοθέατα. Ο κώδικας που τρέχει πίσω από το πλήκτρο είναι ο εξής : btnbackpois.visible = True Με την γραμμή κώδικα btnbackpois.visible = True, το κουμπί Πίσω, που φαίνεται στην επόμενη εικόνα, γίνεται ορατό. Ο λόγος που μπορεί να μην είναι ορατό το συγκεκριμένο πλήκτρο, είναι το συγκεκριμένο TabPage, χρησιμοποιείται και στην συνέχεια της εφαρμογής, εάν θελήσουμε να αλλάξουμε αξιοθέατα κατά την κίνησή μας πάνω στην διαδρομή, μόνο που σε εκείνη την περίπτωση δεν χρειάζεται το συγκεκριμένο κουμπί. 166

167 Εύρεση Προκαθορισμένης Διαδρομής, Επιλογή Προσωπικών Αξιοθεάτων 1 Προεπιλεγμένη επιλογή είναι η Κανένα αξιοθέατο (rdbtnpersonalpoisadd1). poiscategory = 0 Η μεταβλητή poiscategory, όπως αναφέρθηκε και προηγουμένως, χρησιμοποιείται σαν δείκτης κατά την σχεδίαση του χάρτη κίνησης, ώστε να δώσουμε την κατάλληλη εντολή στην κλάση makeroute για την πρόσθεση ή όχι κάποιων αξιοθεάτων, και αν ναι ποια θα είναι αυτά και με ποια κριτήρια θα εμφανιστούν. Τα TreePersonalPois1 και PanelPois θα περιγραφούν στην συνέχεια. 167

168 Αν επιλεγεί το RadioButton Συγκεκριμένα αξιοθέατα (rdbtnpersonalpoisadd2), εμφανίζεται το TreeView TreePersonalPois1, το οποίο περιέχει όλα τα αξιοθέατα που έχει καταχωρήσει ο χρήστης, ενώ αλλάζει και η τιμή της μεταβλητής poiscategory. TreePersonalPois1.Visible = True PanelPois.Visible = False poiscategory = 1 εξής : Η εικόνα του TabPage, όταν επιλεγεί το συγκεκριμένο RadioButton είναι η Εύρεση Προκαθορισμένης Διαδρομής, Επιλογή Προσωπικών Αξιοθεάτων 2 168

169 Αν τώρα επιλεγεί το RadioButton Όσα βρίσκονται σε απόσταση (rdbtnpersonalpoisadd3), εμφανίζεται ένα εμφανίζεται το Panel PanelPois, ενώ η μεταβλητή poiscategory παίρνει τιμή 2. TreePersonalPois1.Visible = False PanelPois.Visible = True poiscategory = 2 Όπως φαίνεται και στην επόμενη εικόνα, το Panel περιέχει ένα Textbox, στο οποίο ο χρήστης δίνει έναν αριθμό, ο οποίος είναι η μέγιστη απόσταση από την τρέχουσα θέση του, την οποία πρέπει να έχει ένα αξιοθέατο, ώστε να απεικονιστεί κατά την διάρκεια της διαδρομής. Εύρεση Προκαθορισμένης Διαδρομής, Επιλογή Προσωπικών Αξιοθεάτων 3 169

170 Και στις τρεις περιπτώσεις, το κουμπί Πίσω παραμένει, και πατώντας το ο χρήστης επιστρέφει στο TabPage Διαδρομή, ενώ το TabPage Προσωπικά Αξιοθέατα παραμένει ανοικτό. Με το κουμπί Επιλογή (btnkindroute1), το οποίο βρίσκεται δίπλα στο Label Είδος Διαδρομής ο χρήστης μπορεί να επιλέξει το είδος της διαδρομής που θα προβληθεί. btnbackkind.visible = True Όπως συνέβη και με αξιοθέατα, για τον ίδιο ακριβώς λόγο, θέτουμε την παράμετρο Visible του κουμπιού btnbackkind ίση με True, ενώ στην συνέχεια εμφανίζεται και το TabPage Είδος Διαδρομής, το οποίο είναι το εξής : Εύρεση Προκαθορισμένης Διαδρομής, Επιλογή Είδους Διαδρομής 170

171 Όπως φαίνεται και από την εικόνα υπάρχουν δυο RadioButton, τα rdbtnroutekind1 και rdbtnroutekind2, με τα οποία ο χρήστης επιλέγει το είδος διαδρομής που επιθυμεί. Όπως έχει ήδη αναφερθεί, προεπιλεγμένο είναι το πρώτο RadioButton. Με την αλλαγή επιλογής RadioButton, ο αντίστοιχος κώδικας που τρέχει αλλάζει την τιμή της μεταβλητής move. Όταν επιλέγεται το πρώτο RadioButton (rdbtnroutekind1), το move παίρνει την τιμή True, ενώ στην αντίθετη περίπτωση παίρνει την τιμή False Το πλήκτρο Πίσω έχει ακριβώς την ίδια λειτουργία με το πλήκτρο Πίσω που υπάρχει στο TabPage Προσωπικά Αξιοθέατα. Αφού ο χρήστης έχει προσθέσει, αν το επιθυμεί, κάποια αξιοθέατα για προβολή και έχει αλλάξει το είδος της διαδρομής, μπορεί να δημιουργήσει την διαδρομή που θέλει, πατώντας το πλήκτρο Διαδρομή (btnroutemap1). Με το συγκεκριμένο πλήκτρο γίνεται αναζήτηση της διαδρομής που ορίζεται μεταξύ των δύο σημείων και απεικόνισής της σε χάρτης με την χρήση και των επιλογών που έκανε ο χρήστης προηγουμένως, ενώ ξεκινάει και ο Timer, που ελέγχει την κίνηση. Αρχικά το πρόγραμμα ελέγχει για τον αν έχει ξαναπραγματοποιηθεί κίνηση. Ο έλεγχος γίνεται με την μεταβλητή used. Αν δεν έχει πραγματοποιηθεί τότε ως τρέχουσα θέση του χρήστη ορίζεται το σημείο Αρχή, που είχε δηλώσει ο χρήστης. Αν όμως έχει πραγματοποιηθεί κάποια κίνηση προηγουμένως, τότε η τρέχουσα θέση του χρήστη έχει αλλάξει θα δοθεί από την currentposition της makeroute. If _makeroute.used= 0 Then cn = New SqlCeConnection(connString) cn.open() datacommand = New SqlCeCommand("SELECT long,lat FROM stoixeia WHERE poi_name='arxi'", cn) reader = datacommand.executereader() 171

172 If reader.read() Then latalongs(0) = New LatLong() latalongs(0).longitude = reader.getdouble(0) latalongs(0).latitude = reader.getdouble(1) End If cn.close() Else latalongs(0) = New LatLong() latalongs(0).latitude = _makeroute.currentposition(0).latitude latalongs(0).longitude = _makeroute.currentposition(0).longitude End If Οι συντεταγμένες του τέλους της διαδρομής, βρίσκονται από την βάση poi, αφού το τέλος της διαδρομής θα είναι το σημείο Τέλος. Στην συνέχεια δίνουμε στην μεταβλητή kindofroute την τιμή της move, ώστε η κλάση να δημιουργήσει και την ανάλογη διαδρομή, ενώ επειδή ορίζουμε μια νέα διαδρομή, δίνουμε στις μεταβλητές started και nmapsbool τις κατάλληλες τιμές. _makeroute.started = 0 _makeroute.kindofroute = move _makeroute.nmapsbool = False 172

173 Αφού ορίσαμε την αρχή και το τέλος της διαδρομής, όπως επίσης και τις απαραίτητες μεταβλητές, ώστε η makeroute να καταλάβει ότι πρόκειται για καινούργια διαδρομή, κατόπιν γίνεται έλεγχος για το εάν και ποια αξιοθεάτα θέλει να δει ο χρήστης κατά μήκος της διαδρομής. Πρώτα γίνεται ένας έλεγχος για το αν η poiscategory έχει τιμή 1. Και αυτό γιατί σε αυτή την περίπτωση η εύρεση των συντεταγμένων των προσωπικών αξιοθεάτων που επέλεξε ο χρήστης θα γίνει μέσα από το κυρίως πρόγραμμα. Εάν η μεταβλητή poiscategory έχει τιμή 1, τότε ο χρήστης έχει επιλέξει κάποια από τα προσωπικά του αξιοθέατα, από κανένα έως όλα. Για τον λόγο αυτό γίνεται αρχικά ένας έλεγχος, ώστε να βρεθεί ο αριθμός των αξιοθεάτων που επέλεξε και να αρχικοποιηθούν οι πίνακες pushlatlongs και names της κλάσης makeroute, όπως επίσης και ο πίνακας pushpinslatlongs, ενώ παράλληλα δηλώνεται και ο αριθμός των pushpins που θα εμφανίζει ο χάρτης. Σε αυτό τον αριθμό προσμετράται και το pushpin της τρέχουσας θέσης του χρήστη. Το ίδιο συμβαίνει και με την μεταβλητή names, στην οποία περνάμε και το κείμενο που θα εμφανιστεί όταν στο pushpin του χρήστη, το οποίο είναι Είστε Εδώ. For i = 0 To treenodes - 1 If TreeView1.Nodes(i).Checked Then numbers += 1 End If Next _makeroute.pushnums = numbers _makeroute.pushlats = New LatLong(numbers - 1) {} pushpinslatlongs = New LatLong(numbers - 1) {} _makeroute.names = New String(numbers) {} 173

174 Αφού έχουμε αρχικοποιήσει τους πίνακες, γίνεται ξανά ένας έλεγχος του TreeView1, και αυτή την φορά όταν βρεθεί επιλεγμένο αξιοθέατο, γίνεται αναζήτηση των συντεταγμένων του στην βάση poi, και τα στοιχεία του (συντεταγμένες και όνομα) αποθηκεύονται στους αντίστοιχους πίνακες. Η μεταβλήτη numbers (numbers=0) χρησιμοποιείται τώρα ως δείκτης για τον αριθμό τεν επιλεγμένων αξιοθεάτων, ώστε τα στοιχεία του να αποθηκεύονται στην κατάλληλη θέση των πινάκων. Και αυτό γιατί μπορεί ο χρήστης από το πλήθος των δέκα, για παράδειγμα, αξιοθεάτων που έχει, να επιλέξει δυο, το πρώτο και το τελευταίο. Αν χρησιμοποιούνταν η μεταβλητή i ως δείκτης, τότε το δεύτερο αξιοθέατο θα προσπαθούσε να το αποθηκεύσει στην θέση 10, η οποία όμως δεν υπάρχει, με αποτέλεσμα το πρόγραμμα να χτυπούσε. For i = 0 To treenodes - 1 If TreeView1.Nodes(i).Checked Then datacommand = New SqlCeCommand("SELECT long,lat FROM stoixeia WHERE poi_name='" & TreeView1.Nodes(i).Text & "'", cn) reader = datacommand.executereader() While reader.read() _makeroute.names(numbers) = TreeView1.Nodes(i).Text _makeroute.pushlatlongs(numbers) = New LatLong() _makeroute. pushlatlongs (numbers).longitude =reader.getdouble(0) _makeroute.pushlats(numbers).latitude = reader.getdouble(1) numbers += 1 End While End If 174

175 Στην συνέχεια στέλνονται στην makeroute η μεταβλητή poiscategory, και η διαστάσεις του PictureBox, στο οποίο θα εμφανιστεί ο χάρτης. _makeroute.pois = poiscategory _makeroute.height = pbroutemap.height _makeroute.width = pbroutemap.width Αν ο χρήστης δεν έχει επιλέξει την επιλογή Συγκεκριμένα Αξιοθέατα στο TabPage Προσωπικά Αξιοθέατα, τότε εκτελείται ο κώδικας που βρίσκεται στο Else. Αρχικά γίνεται ένας έλεγχος για το αν ο χρήστης έχει επιλέξει το RadioButton Όσα βρίσκονται σε απόσταση :. Αν το έχει επιλέξει, υπάρχει η περίπτωση να μην έχει γράψει κάποιον αριθμό. Σε αυτή την περίπτωση ο κώδικας θα εκτελεστεί σαν να έχει επιλέξει το RadioButton Κανένα Αξιοθέατα, γιαυτό και το poiscategory παίρνει τιμή 0. Στην συνέχεια αποστέλλονται στην κλάση η μεταβλητή poiscategory, και η διαστάσεις του PictureBox. Else If poiscategory = 2 And txtdistance.text = String.Empty Then poiscategory = 0 End If _makeroute.pois = poiscategory _makeroute.height = pbroutemap.height _makeroute.width = pbroutemap.width End If 175

176 Αφού έχουν δοθεί όλα τα απαραίτητα στοιχεία στην κλάση, ώστε να δημιουργήσει τον χάρτη, στην συνέχεια το πρόγραμμα καλεί την συνάρτηση της κλάσης, ώστε να δημιουργήσει τον χάρτη και τον τοποθετήσει στον PictureBox. pbroutemap.image = _makeroute.createmap Αφού η κλάση στείλει τον χάρτη, αφαιρούμε όλα τα ανοιχτά TabPages, και εμφανίζουμε το TabPage Χάρτης ( TabMyRouteMap). Για να αφαιρεθούν σωστά τα ανοιχτά TabPages, πρέπει να γίνει έλεγχος για το ποια από αυτά που μπορεί να είναι ανοιχτά έχουν ανοίξει (τα οποία είναι τα TabPages Προσωπικά Αξιοθέατα και Είδος Διαδρομής ) και για την θέση που βρίσκεται το καθένα, ώστε να αφαιρεθούν από το τελευταίο προς το πρώτο. If mypois2 = True And kindroute2 = True Then If mypois1 > kindroute1 Then TabControl1.TabPages.RemoveAt(myPois1) TabControl1.TabPages.RemoveAt(kindRoute1) Else TabControl1.TabPages.RemoveAt(kindRoute1) TabControl1.TabPages.RemoveAt(myPois1) End If kindroute2 = False mypois2 = False ElseIf mypois2 = True Then TabControl1.TabPages.RemoveAt(myPois1) mypois2 = False 176

177 ElseIf kindroute2 = True Then TabControl1.TabPages.RemoveAt(kindRoute1) kindroute2 = False End If TabControl1.TabPages.RemoveAt(0) Όταν αφαιρέσουμε όλα τα TabPages,προσθέτουμε το TabPage Χάρτης. If myroutemap2 = False Then myroutemap1 = TabControl1.TabPages.Count TabControl1.TabPages.Insert(myRouteMap1, myroutemap) TabControl1.SelectedIndex = myroutemap1 myroutemap2 = True Else TabControl1.SelectedIndex = myroutemap1 End If Στην συνέχεια προσθέτουμε τα κουμπιά που είναι απαραίτητα για την διαχείρηση της κίνησης και ενεργοποιούμε τον Timer. Τα κουμπιά είναι τα Συνέχιση Διαδρομής μου, Επιλογές Χαρτών Εύρεση Γενικών Αξιοθεάτων. MenuItem1.MenuItems.Add(MenubtnContinue) MenuItem1.MenuItems.Add(MenubtnRouteChoice) MenuItem1.MenuItems.Add(MenubtnGpoisFind) Timer1.Enabled = True 177

178 Διαδρομή προς Πρ.Αξιοθέατο Εάν ο χρήστης πατήσει το κουμπί Επιλογή (btnfindroute2) δίπλα στο Label Προς Πρ. Αξιοθέατο, τότε αφαιρείται το Tabpage Μενού και προστίθεται το Tabpage Διαδρομή (TabRoute2). Όπως φαίνεται από την επόμενη εικόνα, το συγκεκριμένο TabPage είναι περίπου ίδιο με το TabPage που εμφανίζεται εάν ο χρήστης επιλέξει την Προεπιλεγμένη Διαδρομή. Η μόνη διαφορά που υπάρχει είναι στην επιλογή του τέλους της διαδρομής, το οποίο τώρα ο χρήστης το επιλέγει από το ComboBox (comboend) που υπάρχει. Η επιλογή Αξιοθεάτων και είδους διαδρομής είναι ακριβώς ίδια με προηγουμένως. Εύρεση Διαδρομής προς Προσωπικό Αξιοθέατο 178

179 Αν ο χρήστης ανοίξει το Combobox, θα δει ότι περιέχει όλα τα προσωπικά του αξιοθέατα. Επιλογή Προσωπικού Αξιοθέατου για Τέλος Διαδρομής Ο κώδικας που τρέχει πίσω από το κουμπί Διαδρομή (btnroutemap1) είναι ακριβώς ίδιος με πριν, με μόνη διαφορά την εύρεση των συντεταγμένων του τέλους της διαδρομής. Ενώ προηγουμένως γνωρίζαμε το τέλος, και αναζητούσαμε στην βάση τις συντεταγμένες που σημείου Τέλος, τώρα ανάλογα με την επιλογή που έχει κάνει ο χρήστης στο ComboBox, γίνεται και η αντίστοιχη αναζήτηση. 179

180 cn.open() datacommand = New SqlCeCommand("SELECT long,lat FROM stoixeia WHERE poi_name='" & comboend.text & "' ", cn) reader = datacommand.executereader() If reader.read() Then latalongs(1) = New LatLong() latalongs(1).longitude = reader.getdouble(0) latalongs(1).latitude = reader.getdouble(1) End If cn.close() 180

181 Διαδρομή Προς Γεν.Αξιοθέατα Πατώντας ο χρήστης το κουμπί Επιλογή (btnfindroute3) που βρίσκεται δίπλα στο Label Προς Γεν. Αξιοθέατα, ο χρήστης μεραφέρεται στο τρίτο παρόμοιο μενού, το TabPage Διαδρομή (TabRoute3), που υπάρχει, το οποίο δημιουργεί μια διαδρομή από την τρέχουσα θέση του χρήστη προς ένα αξιοθέατο μιας γενικής κατηγορίας. Η μορφή του συγκεκριμένου TabPage είναι η εξής : Επιλογή Γενικού Αξιοθέατου για Τέλος Διαδρομής 181

182 Όπως φαίνεται και στην εικόνα το η δομή του TabPage, είναι παρόμοια με τα προηγούμενα TabPage Διαδρομή. Περιλαμβάνει τρία Buttons, όμως ο ορισμός του σημείου τερματισμού της διαδρομής διαφέρει. Για την επιλογή του θα πρέπει ο χρήστης να πατήσει το πλήκτρο Προορισμός. Παράλληλα το πλήκτρο Διαδρομή είναι ανενεργό. Και αυτό γιατί δεν υπάρχει προεπιλεγμένο σημείο τερματισμού, ώστε αν ο χρήστης δεν επιλέξει κάποιο σημείο να θέσει ως τέρμα το σημείο αυτό. Αντίθετα στις δυο προηγούμενες επιλογές υπήρχαν προεπιλεγμένα σημεία, (στην Προεπιλεγμένη Διαδρομή είναι το σημείο Telos, ενώ στην Προς Πρ. Αξιοθέατο είναι το σημείο που είναι τοποθετημένο στην πρώτη θέση του ComboBox comboend ). Για το λόγο αυτό ο χρήστης είναι αναγκασμένος να πατήσει το πλήκτρο Προορισμός. If destination2 = False Then destination1 = TabControl1.TabPages.Count TabControl1.TabPages.Insert(destination1, destination) TabControl1.SelectedIndex = destination1 destination2 = True Else TabControl1.SelectedIndex = destination1 End If Όπως γίνεται αντιληπτό και από τον προηγούμενο κώδικα, πατώντας το σηγκεκριμένο πλήκτρο, ανοίγει δίπλα στο TabPage Διαδρομή, το TabPage Προορισμός. 182

183 Στο συγκεκριμένο TabPage υπάρχουν δυο Panel, τα PanelDestCategory και PanelDestPoi. Το πρώτο Panel είναι αυτό που βλέπει ο χρήστης όταν μεταφερθεί στο TabPage : Επιλογή Κατηγορίας Γενικού Αξιοθεάτου Από το ListBox μπορεί να επιλέξει την κατηγορία που θέλει και στην συνέχεια πατώντας το κουμπί Επιλογή (btndestcategory), να εμφανιστεί το δεύτερο Panel, στο ListBox του οποίου θα καταχωρηθούν τα αξιοθεάτα της κατηγορίας που επέλεξε ο χρήστης. 183

184 Ο κώδικας που τρέχει πίσω από το κουμπί btndestcategory, αρχικά ελέγχει αν είναι η πρώτη φορά που κάνουμε αναζήτηση γενικού αξιοθεάτου ως τέλος της διαδρομής. Αν είναι η πρώτη φορά, αυτό σημαίνει ότι το ListBox του Panel PanelDestPoi είναι κενό από στοιχεία. Αντίθετα αν έχει χρησιμοποιηθεί, τότε στο συγκεκριμένο ListBox υπάρχουν τα αξιοθέατα από προηγούμενη αναζήτηση που έκανε ο χρήστης, τα οποία πρέπει να διαγραφούν. If flag = True Then j = ListDestGPois.Items.Count - 1 For i = 0 To ListDestGPois.Items.Count - 1 ListDestGPois.Items.RemoveAt(j - i) Next End If Αφού γίνει η διαγραφή των στοιχείων που τυχών υπάρχουν στο ListBox, στην συνέχεια καλείται η κλάση generalpois1, η οποία με βάση την επιλογή του χρήστη, επιστρέφει τα αξιοθέατα της κατηγορίας. For i = 0 To ListDestGPoisCategory.Items.Count - 1 If ListDestGPoisCategory.SelectedIndex = i Then _generalpois1.entityname = ListDestGPoisCategory.Text End If Next findresults = _generalpois1.getresults 184

185 Αφού επιστραφούν τα αποτελέσματα, τα τοποθετούμε στο ListBox του δεύτερου Panel, βάζοντας δίπλα στο όνομα του αξιοθεάτου έναν αριθμό, ώστε να είναι αισθητικά καλύτερο το αποτέλεσμα που φαίνεται στον χρήστη. Κατόπιν, αν είναι η πρώτη φορά εκτέλεσης του κώδικα και η μεταβλητή flag έχει την τιμή False, θέτουμε την τιμή της True, ώστε την επόμενη φορά που θα χρησιμοποιηθεί η εύρεση διαδρομής προς κάποιο γενικό αξιοθέατο, να διαγραφούν τα στοιχεία που υπάρχουν στο ListBox του δεύτερου Panel. i = 1 For Each fr In findresults.results ListDestGPois.Items.Add(i &"."& fr.foundlocation.entity.name) i += 1 Next ListDestGPois.SelectionIndex = 0 flag = True PanelDestCategory.Visible = False PanelDestPoi.Visible = True 185

186 Στην συνέχεια εμφανίζεται το Panel PanelDestPoi, το οποίο έχει την παρακάτω μορφή: Επιλογή αξιοθεάτου από την κατηγορία που επέλεξε ο χρήστης Στην συγκεκριμένη περίπτωση, στο ListBox εμφανίζονται τα αποτέλεσματα για την αναζήτηση των αξιοθεάτων της κατηγορίας Museum. Τα δυο κουμπιά που εμφανίζονται κάτω από το ListBox με τα αξιοθέατα ( Επιλογή (btndestpoichoose) και Αλλαγή (btndestpoichange) ), δίνουν την δυνατότητα στον χρήστη είτε να επιλέξει ένα αξιοθέατο που θέλει και να επιστρέψει στο TabPage Διαδρομή, είτε να επιστρέψει στο προηγούμενο Panel και να αλλάξει την επιλογή κατηγορίας που έκανε. 186

187 Αφού ενεργοποιηθεί το κουμπί, σε περίπτωση που ο χρήστης το πατήσει μεταφέρεται στο TabPage Διαδρομή, ενώ παράλληλα ενεργοποιείται και το κουμπί Εύρεση. btnroutemap3.enabled = True TabControl1.SelectedIndex = 0 Αντίθετα, αν ο χρήστης πατήσει το κουμπί Αλλαγή, τότε εμφανίζεται το προηγούμενο Panel. Όταν ο χρήστης επιστρέψει στο TabPage Διαδρομή, έχει ενεργοποιηθεί το κουμπί Διαδρομή, το οποίο πλέον μπορεί να χρησιμοποιήσει. Το κουμπί Διαδρομή είναι πλέον έτοιμο για χρήση 187

188 Η επιλογή του είδους της διαδρομής γίνεται όπως και στα προηγούμενα TabPage Διαδρομή. Πατώντας το πλήκτρο Διαδρομή εκτελείται ο κώδικας δημιουργίας του χάρτη της διαδρομής. Η διαφορά που υπάρχει τώρα, σε σχέση με τις προηγούμενες περιπτώσεις, είναι το γεγονός ότι δεν υπάρχει εμφάνιση αξιοθεάτων. Για την εύρεση των συντεταγμένων του σημείου τελικού προορισμού, γίνεται έλεγχος στο ListBox του PanelDestPoi, και όταν βρεθεί το επιλεγμένο αξιοθέατο περνιούνται οι συντεταγμένες στον πίνακα latalongs, στην θέση 1. latalongs(1) = New LatLong() For i = 0 To ListDestGPois.Items.Count - 1 If ListDestGPois.SelectedIndex = i Then latalongs(1) = findresults.results(i).foundlocation.latlong End If Next Ένα επιπλέον σημείο στο οποίο διαφέρουν είναι τα πλήκτρα που προστίθονται στο βασικό πλήκτρο Επιλογές της συσκευής. Αντί για το πλήκτρο Επιλογές Διαδρομής, μέσω του οποίου μπορεί ο χρήστης να αλλάξει το είδος της διαδρομής και τις κατηγορίες των αξιοθεάτων, τώρα προστίθεται το πλήκτρο Αλλαγή Είδους Διαδρομής ( MenuKindRoute1Change ). Αυτή η διαφοροποίηση γίνεται διότι στις συγκεκριμένες διαδρομές δεν εμφανίζονται αξιοθέατα, οπότε δεν θα χρησίμευε σε κάτι η εμφάνιση επιλογής για αλλαγή αξιοθεάτων. 188

189 Λειτουργία Timer Αφού δημιουργηθεί η διαδρομή και αποθηεκυτεί ως εικόνα στο PictureBox που θέλουμε, ενεργοποιείται ο Timer. Ο Timer ελέγχει την κίνηση. Σε κάθε Tick του, όταν έχει ολοκληρωθεί ένα TimeInterval (στην συγκεκριμένη περίπτωση το έχουμε ορίσει ίσο με 5000 msec, δηλαδή 5 δευτερόλεπτα), δίνει εντολή για την δημιουργία μιας νέας εικόνας της διαδρομής, στην οποία η θέση του χρήστη έχει μεταφερθεί κατά ένα Segment πάνω στην διαδρομή. Όταν έχει ολοκληρωθεί ένα TimeInterval, τότε ενεργοποιείται η υπορουτίνα Timer1_Tick. Αρχικά απενεργοποιεί τον Timer. Και αυτό διότι σε αντίθετη περίπτωση θα ξαναξεκινούσε αμέσως να μετράει τον χρόνο, ώστε να συμπληρωθεί το νέο TimeInterval. Ενώ αυτό που θέλουμε εμείς είναι να δημιουργήσει τον χάρτη, και μετά να ξεκινήσει να μετράει τον χρόνο. Και αυτό γιατί όσο εκτελεί τις εντολές δημιουργίας χάρτη, το πρόγραμμα κολλάει, και δεν υπακούει τις εντολές του χρήστη. Οπότε θέλουμε να δώσουμε πέντε δευτερόλεπτα στον χρήστη να επιλέξει, αν θέλει κάποιο από τα πλήκτρα που εμφανίζονται στο πλήκτρο μενού Επιλογές. Timer1.Enabled = False Στην συνέχεια ελέγχει να δει αν με την προηγούμενη κίνηση που πραγματοποιήθηκε φτάσαμε στον τέλος της διαδρομής. Αν όντως έχουμε φτάσει στο τελικό σημείο που ορίσαμε, τότε δεν ξαναενεργοποιείται ο Timer και τελειώνει η λειτουργία της υπορουτίνας. Σε αντίθετη περίπτωση συνεχίζεται η εκτέλεση του κώδικα. Αυξάνεται η τιμή της μεταβλητής position, ενώ αμέσως μετά πραγματοποιείται έλεγχος για το αν έχει αλλάξει κατά την διάρκεια της διαδρομής η κατηγορία των προσωπικών αξιοθεάτων που θέλει να δει ο χρήστης. Αν ο χρήστης έχει επιλέξει τώρα να προβληθούν μερικά ή όλα τα προσωπικά του αξιοθεάτα γίνεται αναζήτηση στην βάση και αποστέλλονται τα στοιχεία των αξιοθεάτων στην κλάση makeroute, όπως ακριβώς γίνεται και κατά τον ορισμό της διαδρομής. 189

190 If _makeroute.finish = False Then position += 1 If checkpois = False Then If poiscategory = 1 Then checkpois = True numbers = 0 For i = 0 To treenodes - 1 If TreeView1.Nodes(i).Checked Then numbers += 1 End If Next _makeroute.pushnums = numbers _makeroute.pushlats = New LatLong(numbers - 1) {} pushpinslatlongs = New LatLong(numbers - 1) {} Dim names(numbers - 1) As String cn.open() numbers = 0 For i = 0 To treenodes - 1 If TreeView1.Nodes(i).Checked Then datacommand = New SqlCeCommand("SELECT long,lat FROM stoixeia WHERE poi_name='" & TreeView1.Nodes(i).Text & "'", cn) reader = datacommand.executereader() 190

191 While reader.read() _makeroute.pushlats(numbers) = New LatLong() _makeroute.pushlats(numbers).longitude = reader.getdouble(0) _makeroute.pushlats(numbers).latitude = reader.getdouble(1) names(number) = TreeView1.Nodes(i).Text numbers += 1 End While End If Next _makeroute.names = names End If cn.close() Αφού ελεγχθεί αν το poiscategory έχει γίνει ίσο με 1, πραγματοποιείται ένα έλεγχος για το αν είναι ίσο με 2, το οποίο σημαίνει ότι ο χρήστης έχει επιλέξει να εμφανίζονται αξιοθέατα με βάση την απόσταση από την θέση του. Εδώ αυτό που μας ενδιαφέρει είναι μήπως ο χρήστης επέλεξε αυτή την επιλογή, αλλά δεν συμπλήρωσε το αντίστοιχο TextBox, οπότε το poiscategory γίνεται 0, ώστε να μην εμφανίζεται κανένα αξιοθέατο. Αμέσως μετά τελειώνει ο κώδικας που αφορά την αλλαγή της κατηγορίας αξιοθεάτων. If poiscategory = 2 And txtdistance.text = String.Empty Then End If poiscategory = 0 191

192 Ακολούθως γίνεται έλεγχος για το αν ο χρήστης έχει αλλάξει το είδος της διαδρομής. Αυτό διαπιστώνεται με έλεγχο της μεταβλητής flag1 της makeroute με την μεταβλητή move. Αν υπάρχει αλλαγή αλλάζουμε την τιμή της flag1, ενώ θέτουμε την και nmapsbool = False ( η nmapsbool χρησιμοποιείται από την makeroute ως flag κατά τον ορισμό των τμημάτων της διαδρομής), όπως επίσης και την position, ίση με 0 ( η position κράταει το τμήμα της διαδρομής πάνω στο οποίο κινείται ο χρήστης) Από την στιγμή που αλλάζει το είδος της διαδρομής είναι σαν να δημιουργείται μια καινούργια διαδρομή από την αρχή, οπότε πρέπει όλες οι μεταβλητές που σχετίζονται με την κίνηση να πάρουν τις αρχικές τους τιμές (nmapsbool και position). Όταν αλλάζει το είδος της διαδρομής, είναι πιθανόν να αλλάζει και ο αριθμός των τμημάτων που αποτελούν μια διαδρομή. Οπότε πρέπει να θεωρηθεί σαν την δημιουργία μιας νέας διαδρομής. If _makeroute.flag1 <> move Then _makeroute.flag1 = move _makeroute.nmapsbool = False position = 0 End If Στην συνέχεια στέλνουμε στην makeroute όλες τις απαραίτητες πληροφορίες που απαιτούνται για την δημιουργία του χάρτη, καλούμε την συνάρτηση CreateMap, ώστε να δημιουργηθεί ο χάρτης, και ξαναενεργοποιούμε τον Timer. _makeroute.position = position _makeroute.pois = poiscategory pbroutemap.image = _makeroute.createmap Timer1.Enabled = True 192

193 Εμφάνιση Χάρτη Διαδρομής Αφού έχει γίνει η επιλογή του είδους της διαδρομής, και έχει σχεδιαστεί ο χάρτης, όπως είδαμε αφαιρούνται όλα τα TabPages που είναι ανοιχτά και εμφανίζεται το TabPage Χάρτης, στο οποίο περιέχεται το PictureBox pbroutemap, στο οποίο εμφανίζεται ο χάρτης. Στην συνέχεια παρουσιάζονται δυο εικόνες, η μεν πρώτη δείχνοντας την κίνηση σε μια διαδρομή, αλλά χωρίς την εμφάνιση αξιοθεάτων, ενώ η δεύτερη παρουσιάζοντας και αξιοθέατα. Διαδρομή χωρίς αξιοθέατα Διαδρομή με αξιοθέατα Αυτό που έχει τώρα σημασία είναι η λειτουργία των πλήκτρων που έχουν προστεθεί στο βασικό πλήκτρο της συσκευής Επιλογές. 193

194 Όταν ο χρήστης πατήσει το συγκεκριμένο πλήκτρο, αναδύεται το μενού με όλα τα πλήκτρα που είναι ενεργά, ενώ παράλληλα σταματάει και ο Timer. Στις περιπτώσεις που ο χρήστης έχει επιλέξει είτε την προκαθορισμένη διαδρομή είτε την διαδρομή προς ένα προσωπικό αξιοθέατο, τα πλήκτρα που προστέθηκαν φαίνονται στην εικόνα 1, ενώ όταν έχει επιλέξει μια διαδρομή προς ένα γενικό αξιοθέατο, η λίστα των πλήκτρων φαίνεται στην εικόνα 2. Όπως δείχνουν και οι εικόνες, η μόνη διαφορά στα νέα πλήκτρα είναι ότι στην δεύτερη εικόνα αντί για το πλήκτρο Επιλογές Διαδρομής, έχουμε το πλήκτρο Αλλαγή Είδους Διαδρομής. Και ο λόγος είναι ότι στην δεύτερη περίπτωση δεν έχουμε εμφάνιση αξιοθεάτων. Προκαθορισμένη Διαδρομή / Προς Πρ. Αξιοθέατο Προς Γεν. Αξιοθέατο 194

195 Πλήκτρο Επιλογές Διαδρομής Το πλήκτρο Επιλογές Διαδρομής (menubtnroutechoice) είναι ένα menu με δυο επιλογές, οι οποίες φαίνονται και στην επόμενη εικόνα : Επιλογές πλήκτρου Επιλογές Διαδρομής 195

196 Αλλαγή Αξιοθεάτων ( menubtnpoischange) Όταν ο χρήστης επιλέξει το συγκεκριμένο πλήκτρο, του δίνεται η δυνατότητα να αλλάξει τα προσωπικά του αξιοθέατα, τα οποία προβάλλονται κατά μήκος της διαδρομής. Όταν πατηθεί το πλήκτρο τότε εμφανίζεται το TabPage Προσωπικά Αξιοθέατα. Είναι το ίδιο TabPage, με εκείνο που εμφανίζεται όταν από τα TabPages Διαδρομή πατήσουμε το κουμπί Αξιοθέατα, με την μόνη διαφορά ότι τώρα το κουμπί Πίσω έχει γίνει μη ορατό. Παράλληλα αλλάζει και η τιμή της μεταβλητής checkpois, ώστε όταν θα συνεχιστεί η κίνηση, να γίνεται έλεγχος στην υπορούτινα Timer1_Tick για να εμφανιστούν τα νέα αξιοθέατα που επέλεξε να βέπει ο χρήστης. checkpois = False btnbackpois.visible = False If mypois2 = False Then mypois1 = TabControl1.TabPages.Count TabControl1.TabPages.Insert(myPois1, mypois) TabControl1.SelectedIndex = mypois1 mypois2 = True Else TabControl1.SelectedIndex = mypois1 End If 196

197 Αλλαγή Είδους Διαδρομής (menukindroutechange) Με αυτό το πλήκτρο ο χρήστης μεταφέρεται στο TabPage Είδος Διαδρομής, ώστε να αλλάξει, αν το επιθυμεί το είδος της διαδρομής. Και εδώ το TabPage που εμφανίζεται είναι το ίδιο με εκείνο που εμφανίζεται όταν πατηθεί το ανάλογο κουμπί στον ορισμό της διαδρομής. Και σε αυτή την περίπτωση, το πλήκτρο Πίσω γίνεται μη ορατό. H μοναδική λειτουργία που κάνει το συγκεκριμένο πλήκτρο είναι να εμφανίζει το αντίστοιχο TabPage. Btnbackkind.Visible = False If kindroute2 = False Then kindroute1 = TabControl1.TabPages.Count TabControl1.TabPages.Insert(kindRoute1, kindroute) TabControl1.SelectedIndex = kindroute1 kindroute2 = True Else TabControl1.SelectedIndex = kindroute1 End If 197

198 Πλήκτρο Αλλαγή Είδους Διαδρομής. Το συγκεκριμένο πλήκτρο (MenuKindRoute1Change) έχει ακριβώς την ίδια λειτουργία με το πλήκτρο menukindroutechange, που περιγράφθηκε προηγουμένως Πλήκτρο Εύρεση Γενικών Αξιοθεάτων Με την χρήση του συγκεκριμένου πλήκτρου (MenubtnGPoisFind), εμφανίζεται το TabPage Γενικά Αξιοθέατα. Θέτουμε την poischecked ίση με False, και προσθέτουμε και επιλέγουμε το TabPage Γενικά Αξιοθέατα στο TabControl. Η μεταβλητή poischecked χρησιμοποιείται στο TabPage Πληροφορίες Αριθμών, από τον κώδικα που τρέχει πίσω από το κουμπί Εύρεση (btnroutepoi) που υπάρχει εκεί. poischecked = False If gpois2 = False Then gpois1 = TabControl1.TabPages.Count TabControl1.TabPages.Insert(gPois1, gpois) TabControl1.SelectedIndex = gpois1 gpois2 = True Else TabControl1.SelectedIndex = gpois1 End If 198

199 Πλήκτρο Συνέχιση Διαδρομής Με το συγκεκριμένο πλήκτρο ξαναρχίζει η κίνηση πάνω στην διαδρομή, η οποία είχε διακοπεί με το πάτημα του πλήκτρου Επιλογές. Αρχικά μετράει τον αριθμό των ανοιχτών TabPages, και αφαιρεί όλα τα TabPages, που μπορεί να έχουν ανοιχτεί, ώστε να υπάρχει μόνο TabPage Xάρτης. Dim tabpages As Integer tabpages = TabControl1.TabPages.Count - 1 If tabpages > 0 Then For i = 1 To tabpages TabControl1.TabPages.RemoveAt(tabpages i) Next Στην συνέχεια αφαιρούνται όλα τα κουμπιά, που τυχόν να έχουν προστεθεί. Σε αντίθεση με τα TabPages που δεν γίνεται να αφαιρεθεί TabPage που δεν υπάρχει, στα πλήκτρα δεν υπάρχει πρόβλημα. MenuItem1.MenuItems.Remove(MenuNumInformation) MenuItem1.MenuItems.Remove(MenurouteInformation) MenuItem1.MenuItems.Remove(MenubtnMapGPois) MenuItem1.MenuItems.Remove(MenuNewRoute) MenuItem1.MenuItems.Remove(MenubtnNewRoute) 199

200 Και στο τέλος θέτουμε όλες τις μεταβλητές τύπου Boolean, οι οποίες ελέγχουν αν έχουν ανοιχτεί τα TabPages που αναφέρθηκαν προηγουμένως, την τιμή False. Και αυτό επειδή αφαιρούμε όλα τα επιπλέον TabPages. Και τέλος ενεργοποιούμε τον Timer. poismap2 = False gpois2 = False newroute2 = False mypois2 = False kindroute2 = False If Not TabControl1.SelectedIndex = myroutemap1 Then TabControl1.SelectedIndex = myroutemap1 End If Timer1.Enabled = True 200

201 Εύρεση Γενικών Αξιοθεάτων Το συγκεκριμένο TabPage εμφανίζεται όταν ο χρήστης πατήσει το πλήκτρο Εύρεση Γενικών Αξιοθεάτων. Η δομή που έχει είναι η εξής : Επιλογή κατηγορίας Γενικών Αξιοθεάτων Όπως φαίνεται και από την προηγούμενη εικόνα, το TabPage αποτελείται από ένα ListBox, στο οποίο εμφανίζονται οι κατηγορίες γενικών αξιοθεάτων που έχει επιλέξει ο χρήστης, από δυο RadioButton (rdbtnroutegpoisadd1 και rdbtnroutegpoisadd2), για να μπορέσει, αν το θέλει, να κάνει φιλτράρισμα των 201

202 αποτελεσμάτων με βάση την απόστασή τους από την θέση του, και από ένα κουμπί, το Εύρεση, με το οποίο δίνει εντολή στο σύστημα να βρεθούν τα αξιοθέατα που θέλει ο χρήστης. Αν ο χρήστης επιλέξει το RadioButton Όσα βρίσκονται σε απόσταση : (rdbtnroutegpoisadd2), εμφανίζεται ένα TextBox και ένα Label, ώστε ο χρήστης να ορίσει την απόσταση που θέλει. Επιλογή εμφάνισης Γεν. Αξιοθεάτων σε συγκεκριμένη απόσταση 202

203 Αφού ο χρήστης έχει επιλέξει την κατηγορία αξιοθεάτων που θέλει και έχει θέσει και την μέγιστη απόσταση που επιθυμεί, στην συνέχεια μπορεί να πατήσει το κουμπί Εύρεση, ώστε να βρεθούν τα αξιοθέατα της κατηγορίας και να απεικονιστούν σε ένα χάρτη. Αν ο χρήστης έχει ξανακάνει αναζήτηση για γενικά αξιοθέατα, και γενικά έχει πραγματοποιήσει όλες τις αναζητήσεις που μπορεί να κάνει με την βοήθεια του χάρτη γενικών αξιοθεάτων που θα προβληθεί στην συνέχεια, αφαιρούνται όλα τα επιπλέον TabPages, που σχετίζονται με τα γενικά αξιοθέατα που είχαν βρεθεί προηγουμένως. If routeinfo2 = True Then routeinfo2 = False TabControl1.TabPages.RemoveAt(routeInfo1) End If If newroute2 = True Then newroute2 = False TabControl1.TabPages.RemoveAt(newRoute1) End If If poisinfo2 = True Then poisinfo2 = False TabControl1.TabPages.RemoveAt(poisInfo1) End If If poismap2 = True Then poismap2 = False TabControl1.TabPages.RemoveAt(poisMap1) End If 203

204 Στην συνέχεια γίνεται έλεγχος στο ListBox, στο οποίο εμφανίζονται τα αξιοθέατα της κατηγορίας που έχει επιλέξει ο χρήστης. Αν έχει στοιχεία, πράγμα που σημαίνει ότι ο χρήστης έχει πραγματοποιήσει ξανά μια αναζήτηση, διαγράφει τα στοιχεία από το ListBox, ώστε να εμφανίζονται μόνο όσα έχουν σχέση με την τωρινή αναζήτηση που κάνει ο χρήστης. If ListBox1.Items.Count > 0 Then Dim clean As Integer = ListBox1.Items.Count For i = 0 To clean - 1 ListBox1.Items.RemoveAt(clean i) Next End If Κατόπιν αφαιρούνται όλα τα επιπλέον πλήκτρα, που τυχόν είχαν προστεθεί. MenuItem1.MenuItems.Remove(MenuNumInformation) MenuItem1.MenuItems.Remove(MenurouteInformation) MenuItem1.MenuItems.Remove(MenuNewRoute) MenuItem1.MenuItems.Remove(MenubtnMapGPois) MenuItem1.MenuItems.Remove(MenubtnNewRoute) 204

205 Στην συνέχεια γίνεται η αναζήτηση των αξιοθεάτων της κατηγορίας που επέλεξε ο χρήστης. Η αναζήτηση θα γίνει με την βοήθεια της κλάσης generalpois1. Αρχικά δίνουμε στην κλάση το όνομα της κατηγορίας για την οποία θα γίνει η αναζήτηση. For i = 0 To ListGPois.Items.Count - 1 If ListGPois.SelectedIndex = i Then _generalpois1.entityname = ListGPois.Text End If Next Ακολούθως ελέγχουμε αν ο χρήστης έχει επιλέξει να δει όλα τα αξιοθέατα ή μόνο όσα είναι σε κάποια απόσταση. Αν ισχύει η δεύτερη περίπτωση, στέλνουμε στην κλάση την τιμή που έχει το TextBox txtgpoisdistance, στο οποίο ο χρήστης έχει γράψει την απόσταση που θέλει, ενώ παράλληλα δίνουμε στην generalpois1 τις συντεταγμένες της τρέχουσας θέσης του χρήστη, τις οποίες παίρνουμε από την κλάση makeroute, ώστε η κλάση να πραγματοποιήσει τις κατάλληλες πράξεις και να επιστρέψει μόνο όσα βρίσκονται σε κοντινή απόσταση. If GPoisCategory = True Then _generalpois1.distance = txtgpoisdistance.text _generalpois1.mylatlongs = New LatLong(0) {} _generalpois1.mylatlongs(0) = New LatLong() _generalpois1.mylatlongs(0).latitude = _makeroute.latalongs(0).latitude _generalpois1.mylatlongs(0).longitude = _makeroute.latalongs(0).longitude End If 205

206 Τα αποτελέσματα της generalpois1 τα περνάμε κατευθείαν στην generalpois2, ώστε να δημιουργηθεί ο χάρτης. Επιπλέον η generalpois2 παίρνει από την makeroute την τρέχουσα θέση του χρήστη, ώστε να απεικονιστεί και αυτή μαζί με αξιοθέατα. Κατόπιν ορίζουμε τις διαστάσεις που θα πρέπει να έχει ο χάρτης που θα σχηματιστεί και ορίουμε το PictureBox, στο οποίο θα τοποθετηθεί. _generalpois2.foundentities = _generalpois1.getresults _generalpois2.entitiesnum = _generalpois1.entitiesnum _generalpois2.mylatlongs = New LatLong(0) {} _generalpois2.mylatlongs(0) = New LatLong() _generalpois2.mylatlongs(0).latitude = _makeroute.latalongs(0).latitude _generalpois2.mylatlongs(0).longitude = _makeroute.latalongs(0).longitude _generalpois2.height = pbroutepoi.height _generalpois2.width = pbroutepoi.width pbroutepoi.image = _generalpois2.createmap Στην συνέχεια εμφανίζεται και επιλέγεται το TabPage Χάρτης Γεν. Αξιοθεάτων, το οποίο περιέχει και το PictureBox pbroutepoi. Παράλληλα προστίθονται δυο επιπλέον πλήκτρα στο πλήκτρο Επιλογές, τα Χάρτης Γεν. Αξιοθεάτων (MenubtnMapGPois) και το Πληροφορίες Αριθμών (MenuNumInformation). Προστίθεται πρώτα το MenubtnMapGPois, γιατί η δουλειά του είναι να επιλέγεται το TabPage Χάρτης Γεν. Αξιοθεάτων, ενώ το δεύτερο πλήκτρο που προστέθηκε δίνει πληροφορίες για τους αριθμούς που εμφανίζονται στον χάρτη. Οπότε είναι πιθανότερο ο χρήστης να χρησιμοποιήσει το δεύτερο πλήκτρο, και για τον λόγο αυτό τοποθετείται τελευταίο. 206

207 poismap1 = TabControl1.TabPages.Count TabControl1.TabPages.Insert(poisMap1, poismap) TabControl1.SelectedIndex = poismap1 poismap2 = True MenuItem1.MenuItems.Add(MenubtnMapGPois) MenuItem1.MenuItems.Add(MenuNumInformation) Ενώ τα πλήκτρα που περιλαμβάνονται τώρα στο πλήκτρο Επιλογές προστέθηκαν φαίνονται στην επόμενη εικόνα : Πλήκτρα που προστίθονται όταν εμφανίζεται ο χάρτης Γεν. Αξιοθεάτων 207

208 Πλήκτρο Χάρτης Γεν. Αξιοθεάτων Η μοναδική λειτουργία του συγκεκριμένου πλήκτρου είναι να επιλέγει το TabPage Χάρτης Γεν. Αξιοθεάτων, ώστε αν ο χρήστης βλέπει κάποιο άλλο από τα ανοιχτά TabPages, θέλει να ξαναδεί τα αξιοθέατα, να εμφανίζεται το συγκεκριμένο TabPage. TabControl1.SelectedIndex = poismap Πλήκτρο Πληροφορίες Αριθμών Με το συγκεκριμένο πλήκτρο, προβάλλεται στον χρήστη το TabPage Πληροφορίες Αριθμών. Αν το TabPage έχει ήδη προστεθεί, παρέχοντας πληροφορίες για τα αξιοθέατα που απεικονίζονται στο TabPage Χάρτης Γεν. Αξιοθεάτων, και απλά ο χρήστης έχει μεταφερθεί σε κάποιο άλλο TabPage, από αυτά που είναι ανοικτά, τότε το επιλέγει ώστε να το ξαναδεί ο χρήστης. Αν δεν είναι ανοικτό, δηλαδή ο χρήστης το πατάει για πρώτη φορά μετά την εμφάνιση του TabPage Χάρτης Γεν. Αξιοθεάτων, τότε το προσθέτει στο TabControl και το εμφανίζει στον χρήστη. Αρχικά γίνεται έλεγχος για το αν υπάρχει στο TabControl. Αν δεν υπάρχει τότε εκτελείται ο κώδικας που βρίσκεται μετά την γραμμή If poischecked = False Then. Και αυτό γιατί, όπως είδαμε, όταν η μεταβλητή poischecked είναι False, τότε προβάλλονται γενικά αξιοθέατα. Όπως δηλαδή συμβαίνει και στην περίπτωσή μας. Στον κώδικα που παρατίθεται στην συνέχεια, τοποθετούνται στο ListBox που υπάρχει στο TabPage τα αξιοθέατα που έχουν βρεθεί, ενώ κατόπιν προστίθεται και εμφανίζεται το TabPage. 208

209 If poischecked = False Then For i = 0 To _generalpois2.list1.items.count - 1 ListBox1.Items.Insert(i, _generalpois2.list1.items(i)) Next ListBox1.SelectedIndex = 0 If poisinfo2 = False Then poisinfo1 = TabControl1.TabPages.Count TabControl1.TabPages.Insert(poisInfo1, poisinstr) TabControl1.SelectedIndex = poisinfo1 poisinfo2 = True Else TabControl1.SelectedIndex = poisinfo1 End If 209

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

211 πίσω από το κουμπί Εύρεση καλύπτει και τις δυο περιπτώσεις. Στην συγκεκριμένη περίπτωση εκτελείται ο κώδικας που βρίσκεται μέσα στο loop If poischecked = False Then και στο Else που αντιστοιχεί στην γραμμή κώδικα If _makeroute.dokimi = 0 Then. Και αυτό επειδή η μεταβλητή poischecked ελέγχει για το αν το αξιοθέατο είναι γενικό ή προσωπικό, ενώ η μεταβλητή dokimi της makeroute ελέγχει αν η κλάση έχει τρέξει έστω και μια φορά, με αποτέλεσμα να έχει δημιουργηθεί η διαδρομή. Αν είναι μηδέν, η κλάση δεν έχει τρέξει. Επειδή, σε αυτή την περίπτωση αναφερόμαστε σε γενικά αξιοθέατα και το κυρίως πρόγραμμα έχει καλέσει έστω και μια φορά την κλάση, εκτελείται ο κώδικας που βρίσκεται στο σημείο που αναφέρθηκε προηγουμένως, και ο οποίος είναι ο εξής : _makeroutepois.latlongs(0).latitude= _makeroute.currentposition(0).latitude _makeroutepois.latlongs(0).longitude = _makeroute.currentposition(0).longitude End If For i = 0 To ListBox1.Items.Count - 1 If ListBox1.SelectedIndex = i Then _makeroutepois.latlongs(1).latitude = _generalpois2.latlongs(i).latitude _makeroutepois.latlongs(1).longitude = _generalpois2.latlongs(i).longitude name = ListBox1.Text End If Next 211

212 Όπως φαίνεται και από τον προηγούμενο κώδικα, οι συντεταγμένες της τρέχουσας θέσης του χρήστη δίνονται από την μεταβλητή currentposition της makeroute, ενώ οι συντεταγμένες του σημείου προορισμού, το οποίο έχει επιλέξει ο χρήστης προηγουμένως, βρίσκονται με την βοήθεια της generalpois2, ενώ η κλάση που χρησιμοποιείται τώρα για την δημιουργία της διαδρομής είναι η makeroutepois. Ο λόγος που χρησιμοποιείται η συγκεκριμένη κλάση και όχι η makeroute είναι ότι αυτό που μας ενδιαφέρει τώρα είναι να παρουσιαστεί όλη η διαδρομή και όχι μόνο ο χάρτης γύρω από την τρέχουσα θέση του χρήστη, όπως συμβαίνει με την χρήση της makeroute. Όπως αναλύθηκε και προηγουμένως, όταν έγινε περιγραφή των κλάσεων, αυτό συμβαίνει επειδή χρησιμοποιείται διαφορετική κλάση View. Στην συνέχεια στέλνονται οι επιπλέον απαραίτητες πληροφορίες στην makeroutepois (πίνακας με ονόματα σημείων, μήκος και πλάτος PictureBox), και στην συνέχεια καλείται η συνάρτηση CreateMap της κλάσης, ώστε να δημιουργηθεί ο χάρτης και να απεικονιστεί στον χάρτη PictureBox.. _makeroutepois.poiname = name _makeroutepois.height = pbroutepoi.height _makeroutepois.width = pbroutepoi.width pbnewroute.image = _makeroutepois.createmap Στην συνέχεια γίνεται έλεγχος για το υπάρχει ήδη στο TabControl το TabPage Επιλεγμένη Διαδρομή, στο οποίο υπάρχει το PictureBox pbnewroute, στο οποίο έχει τοποθετηθεί ο χάρτης της νέας διαδρομής. Επιπλέον προσθέτονται και τρία ακόμη πλήκτρα, τα : Επιλεγμένη Διαδρομή (MenubtnNewRoute) Πληροφορίες Διαδρομής (MenurouteInformation) Κίνηση στην νέα Διαδρομή (MenuNewRoute). 212

213 If newroute2 = False Then newroute1 = TabControl1.TabPages.Count TabControl1.TabPages.Insert(newRoute1, newroute) newroute2 = True TabControl1.SelectedIndex = newroute1 Else TabControl1.SelectedIndex = newroute1 End If MenuItem1.MenuItems.Add(MenubtnNewRoute) MenuItem1.MenuItems.Add(MenurouteInformation) MenuItem1.MenuItems.Add(MenuNewRoute) 213

214 Χάρτης Επιλεγμένη Διαδρομή Το συγκεκριμένο TabPage περιέχει μόνο το PictureBox pbroutemap pbnewroute, στο οποίο εμφανίζεται ο χάρτης. Εμφάνιση διαδρομής μεταξύ τρέχουσας θέσης και Γεν. Αξιοθεάτου 214

215 Όπως είπαμε και προηγουμένως, έχουν προστεθεί τρία επιπλέον πλήκτρα όπως φαίνεται και στην επόμενη εικόνα : Πλήκτρα που υπάρχουν στο TabPage Επιλεγμένη Διαδρομή 215

216 Πλήκτρο Επιλεγμένη Διαδρομή Αυτό που κάνει το συγκεκριμένο κουμπί είναι να επιλέγει το TabPage Eπιλεγμένη Διαδρομή. Οπότε αν ο χρήστης έχει επιλέξει να βλέπει κάποιο άλλο TabPage, πατώντας αυτό το πλήκτρο, ξαναβλέπει τον χάρτη με την διαδρομή προς το αξιοθέατο που θέλει Πλήκτρο Οδηγίες Διαδρομής Με το συγκεκριμένο πλήκτρο, εμφανίζεται το TabPage Οδηγίες Διαδρομής, στο οποίο ο χρήστης μπορεί να δει αναλυτικές οδηγίες για το πως θα μεταφερθεί στο σημείο. Όπως αναφέρθηκε και στην αρχή, στο συγκεκριμένο TabPage Οδηγίες Διαδρομής περιέχεται ένα DataGrid, στο οποίο εμφανίζονται οι οδηγίες. Θα πρέπει λοιπόν τις πληροφορίες να τις αποθηκεύσουμε σε ένα DataTable, τα δεδομένα του οποίου στην συνέχεια θα περάσουμε στο DtaGrid. Στο DataTable θα υπάρχουν δυο στήλες, η Οδηγίες και η Απόσταση. Δηλώνουμε τα ονόματα των στηλών και τα περνάμε στο DataTable Dim table As New Data.DataTable Dim column1, column2 As Data.DataColumn Dim datarow1 As Data.DataRow column 1 = New Data.DataColumn("Οδηγίες") column 2 = New Data.DataColumn("Απόσταση") table.columns.add(column 1) table.columns.add(column 2) 216

217 Όπως έχουμε αναφέρει, όταν μια κλάση δημιουργεί μια διαδρομή, χωρίζει από μόνη της την διαδρομή σε κάποια τμήματα. Οι οδηγίες που προσθέτονται στην πρώτη στήλη αφορούν πληροφορίες για το πώς θα μεταφερθεί ο χρήστης από το τμήμα που βρίσκεται τώρα στο επόμενο, ενώ στην δεύτερη στήλη γράφεται η απόσταση μεταξύ των δυο αυτών σημείων, η οποία είναι μετρημένη σε χιλιόμετρα. Δημιουργούμε μια νέα γραμμή για το DataTable, στην οποία προσθέτουμε τις δυο στήλες με τις αντίστοιχες πληροφορίες, και στην συνέχεια προσθέτουμε την γραμμή στον πίνακα. For i = 0 To _makeroutepois.myroute.itinerary.segments(0).directions.length - 1 datarow1 = table.newrow datarow1.item("οδηγίες") = _makeroutepois.myroute.itinerary.segments(0).directions(i).ins truction datarow1.item("απόσταση") = _makeroutepois.myroute.itinerary.segments(0).directions(i).dis tance table.rows.add(datarow1) Next Στην συνέχεια ορίζουμε ένα DataSet, στο οποία περνάμε τα στοιχεία του πίνακα που μόλις δημιουργήσαμε, ενώ στην συνέχεια τοποθετούμε το DataSet στο Datagrid, ώστε να ο πίνακας να εμφανιστεί στον χρήστη. Dim ds As New Data.DataSet ds.tables.add(table) DataGrid1.DataSource = ds.tables(0) 217

218 Κατόπιν γίνεται ένας έλεγχος για το υπάρχει ήδη στο TabControl το TabPage Οδηγίες Διαδρομής. Αν δεν υπάρχει, προστίθεται στο TabControl και επιλέγεται για να το δει ο χρήστης. Αν είναι ήδη ανοιχτό, απλά επιλέγεται για να το δει ο χρήστης. To TabPage που εμφανίζεται είναι το ακόλουθο: Πληροφορίες σχετικά με την διαδρομή 1 Πληροφορίες σχετικά με την διαδρομή 2 218

219 Πλήκτρο Κίνηση στην νέα Διαδρομή Αφού ο χρήστης έχει δει την διαδρομή μεταξύ της θέσης του και ενός γενικού αξιοθεάτου, μπορεί, αν επιθυμεί, να κινηθεί πάνω σε αυτή την διαδρομή. Σε αυτή την περίπτωση πατάει το πλήκτρο Κίνηση στην Νέα Διαδρομή. Πριν δoθεί εντολή στην makeroute για κίνηση επί της νέας διαδρομής, η εφαρμογή θα πρέπει να έρθει σε παρόμοια κατάσταση, με αυτή που θα εμφανιζόταν αν η κίνηση καθοριζόταν από τα TabPage Διαδρομή. Αρχικά αφαιρούνται όλα τα ανοιχτά TabPages Dim count As Integer count = TabControl1.TabPages.Count For i = 1 To count TabControl1.TabPages.RemoveAt(count - i) Next Στην συνέχεια ρυθμίζουμε όλες τις ομάδες RadioButton, ώστε να είναι επιλεγμένο το ίδιο με εκείνο που ήτανε προεπιλογή. RadioButton7.Checked = True RadioButton3.Checked = True RadioButton2.Checked = True RadioButton10.Checked = True 219

220 Ακολούθως επεξεργαζόμαστε όλα τα TreeView, ώστε να μην είναι επιλεγμένο κανένα από τα στοιχεία που έχουνε στην λίστα τους. For i = 0 To TreeView1.Nodes.Count - 1 TreeView1.Nodes(i).Checked = False Next For i = 0 To TreeView2.Nodes.Count - 1 TreeView2.Nodes(i).Checked = False Next Κατόπιν ελέγχουμε τα ListBox, στα οποία υπάρχει περίπτωση να έχουν προστεθεί αξιοθέατα. Αν έχουν στοιχεία, τότε τα αφαιρούμε, ώστε την επόμενη φορά να είναι άδειο και να προστεθούν μόνο τα στοιχεία της αναζήτησης που θα κάνει εκείνη την στιγμή ο χρήστης. If ListBox1.Items.Count > 0 Then clean = ListBox1.Items.Count For i = 0 To clean 1 ListBox1.Items.RemoveAt( clean 1 i) Next End If 220

221 Αντίθετα, στα ListBox που περιέχουν τις κατηγορίες των γενικών αξιοθεάτων, επιλέγουμε το πρώτο στοιχείο τις λίστας, ώστε την επόμενη φορά που θα τα δει ο χρήστης, να είναι ακριβώς όπως τα είδε και την πρώτη φορά. ListGPois.SelectedIndex = 0 ListBox2.SelectedIndex = 0 ListBox3.SelectedIndex = 0 Στην συνέχεια γίνεται επεξεργασία στα Textbox, στα οποία ο χρήστης έχει την δυνατότητα να γράψει την απόσταση που θέλει, μέσα στην οποία πρέπει να βρεθούν αξιοθέατα. txtdistance.text = String.Empty txtgpoisdistance.text = String.Empty Στην συνέχεια θα πρέπει να θέσουμε όλες τις μεταβλητές τύπου Boolean, οι οποίες χρησιμεύουν στον έλεγχο για το αν ένα TabPage είναι ανοιχτό ή όχι, ίσες με False. Και αυτό γιατί έχουμε αφαιρέσει όλα TabPages από το TabControl, οπότε θα πρέπει αυτές οι μεταβλητές να πάρουν την τιμή False. Σε διαφορετική περίπτωση, εάν επιχειρήσει ο χρήστης να εμφανίσει ένα TabPage, ενώ η μεταβλητή τύπου Boolean, που ελέγχει αν είναι ανοιχτό το TabPage ή όχι, έχει τιμή ίση με True, τότε θα προσπαθήσει να αναζητήσει να εμφανίσει το TabPage, το οποίο όμως δεν θα υπάρχει. Οπότε δεν θα εμφανίσει τίποτα. gpois2 = False mypois2 = False kindroute2 = False poismap2 = False 221

222 poisinfo2 = False myroutemap2 = False routeinfo2 = False newroute2 = False Στην συνέχεια αφαιρούμε όλα τα επιπλεόν πλήκτρα που προστέθηκαν προηγουμένως, κατά τα διάφορα στάδια που προηγήθηκαν της εμφάνισης του πλήκτρου Κίνηση στην νέα Διαδρομή. MenuItem1.MenuItems.Remove(MenubtnRouteChoice) MenuItem1.MenuItems.Remove(MenuNumInformation) MenuItem1.MenuItems.Remove(MenurouteInformation) MenuItem1.MenuItems.Remove(MenuNewRoute) MenuItem1.MenuItems.Remove(MenubtnNewRoute) MenuItem1.MenuItems.Remove(MenubtnMapGPois) MenuItem1.MenuItems.Remove(MenubtnGPoisFind) MenuItem1.MenuItems.Remove(MenuKindRoute1Change) Θα πρέπει τώρα να προσθέσουμε τα πλήκτρα που είναι απαραίτητα, ώστε το πλήκτρο Επιλογές να έχει τα ίδια πλήκτρα, με εκείνα που θα εμφανίζονταν, αν επιλέγαμε εξ αρχής την εύρεση διαδρομή προς γενικό αξιοθέατο. MenuItem1.MenuItems.Add(MenuKindRoute1Change) MenuItem1.MenuItems.Add(MenubtnMapGPois) 222

223 Μπορεί κανείς να διαπιστώσει ότι τα δυο πλήκτρα που προσθέσαμε είναι τα δυο τελευταία που αφαιρέθηκαν. Αυτή την προσθαφαίρεση την κάνουμε για δυο λόγους: α) δεν γνωρίζουμε αν αρχικά ο χρήστης είχε επιλέξει την εύρεση διαδρομής προς γενικό αξιοθέατο. Αν δεν την είχε επιλέξει, τότε το πλήκτρο MenuKindRoute1Change ( Αλλαγή Είδους Διαδρομής ) δεν θα είχε προστεθεί. Οπότε θα έπρεπε να το προσθέσουμε τώρα. β) το πλήκτρο MenubtnMapGPois ( Εύρεση Γεν. Αξιοθεάτων ) αφαιρείται και προστίθεται ξανά, γιατί το πλήκτρο MenuKindRoute1Change θα πρέπει να τοποθετηθεί στην ακριβώς επάνω θέση. Οπότε το αφαιρούμε, προσθέτουμε πρώτα το πλήκτρο MenuKindRoute1Change και στην συνέχεια προσθέτουμε ξανά το πλήκτρο MenubtnMapGPois. Αφού γίνουν οι προσθαφαιρέσεις των πλήκτρων, στην συνέχεια προσθέτουμε στο TabControl το TabPage Χάρτης, ενώ στην συνέχεια ορίζουμε στην κλάση makeroute τις τιμές των μεταβλητών position και pois. TabControl1.TabPages.Insert(0, myroutemap) _makeroute.position = 0 _makeroute.pois = 0 _makeroute.started = 0 _makeroute.flag1 = move _makeroute.nmapsbool = False _makeroute.height = pbroutemap.height _makeroute.width = pbroutemap.width 223

224 Τις συντεταγμένες του αρχικού και του τελικού σημείου της διαδρομής η makeroute της λαμβάνει από την makeroutepois. latalongs = New LatLong(1) {} latalongs(0) = New LatLong() latalongs(1) = New LatLong() latalongs(0).longitude = _makeroutepois.latlongs(0).longitude latalongs(0).latitude = _makeroutepois.latlongs(0).latitude latalongs(1).longitude = _makeroutepois.latlongs(1).longitude latalongs(1).latitude = _makeroutepois.latlongs(1).latitude Στην συνέχεια καλούμε την συνάρτηση CreateMap της makeroute, ώστε να δημιουργηθεί ο χάρτης, ορίζοντας παράλληλα το PictureBox στο οποίο θα εμφανιστεί ο χάρτης, ενώ ακολούθως ενεργοποιούμε τον Τimer. pbroutemap.image = _makeroute.createmap Timer1.Enabled = True 224

225 Μενού Εύρεσης Θέσης Η εύρεση και απεικόνιση της θέσης του χρήστη είναι η άλλη επιλογή που δίνεται στο TabPage Επιλογές. Εάν ο χρήστης επιλέξει αυτή την επιλογή μεταφέρεται στο TabPage Μενού, το οποίο έχει την εξής μορφή: Επιλογές Εύρεσης Θέσης 225

226 Όπως φαίνεται και από την εικόνα, αποτελείται από δυο Radiobutton και το κουμπί Εύρεση. Στο πλήκτρο Επιλογές υπάρχουν τα πλήκτρα Αρχική Επιλογές Χαρτών. Πλήκτρα που υπάρχουν στο συγκεκριμένο TabPage Προεπιλεγμένο RadioButton είναι το πρώτο. Αν επιλέξει ο χρήστης το δεύτερο RadioButton, τότε εμφανίζεται το Panel PanelPositionMenu, ενώ τώρα ο χρήστης δεν μπορεί να επιλέξει το κουμπί Εύρεση. PanelPositionMenu.Visible = True btnfindposition.enabled = False 226

227 Επιλογή Εμφάνισης Αξιοθεάτων Αν στην συνέχεια επιλεγεί ξανά το πρώτο RadioButton, τότε ενεργοποιείται ξανά το κουμπί Εύρεση, ενώ εξαφανίζεται το Panel. Panel2.Visible = False btnfindposition.enabled = True Ο λόγος που αν επιλεγεί το δεύτερο RadioButton, απενεργοποιείται το κουμπί Εύρεση, είναι ότι ο χρήστης θα πρέπει πρώτα να επιλέξει κάποια αξιοθέατα για προβολή. Θα πρέπει να πατήσει ένα από τα δυο κουμπιά που υπάρχουν, ώστε να επιλέξει τα αξιοθέατα που θέλει να προβληθούν μαζί με την τρέχουσα θέση του. 227

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

229 Αν πατήσει το πλήκτρο που αφορά τα γενικά αξιοθέατα θα εμφανιστεί ένα Panel που περιέχει τις κατηγορίες των γενικών αξιοθεάτων, που έχει επιλέξει ο χρήστης. Πρόσθεση κατηγορίας γενικών αξιοθεάτων Αντίθετα το κουμπί Πίσω εμφανίζεται και στις δυο περιπτώσεις. Όταν πατηθεί αρχικά ελέγχει να δει αν έχει εμφανιστεί το TreeView ή το Panel. Αν έχει εμφανιστεί το TreeView, τότε γίνεται ένας πρώτος έλεγχος για το αν έχουν επιλεγεί κάποια αξιοθέατα από την λίστα. Αν δεν έχουν επλεγεί, τότε τοποθετείται ένα κείμενο στο Label, το οποίο πληροφορεί τον χρήστη ότι δεν έχουν επιλεγεί αξιοθέατα. Αν τώρα έχουν επιλεγεί, πραγματοποιείται ένας ακόμη έλεγχος στο TreeView, στον οποίο καταγράφονται ποια αξιοθέατα έχουν επιλεγεί και τα ονόματά 229

230 τους προσθέτονται στο Label, ώστε όταν ο χρήστης επιστρέψει στο TabPage Μενού να βλέπει παράλληλα και ποια αξιοθέατα έχει επιλέξει. Αν τώρα έχει εμφανιστεί το Panel, εκτός από την δυνατότητα επιλογής της κατηγορίας γενικών αξιοθεάτων, μπορεί να επιλέξει και αν θα εμφανιστούν όλα τα αξιοθέατα από την κατηγορία ή μόνο εκείνα που βρίσκονται σε μια συγκεκριμένη απόσταση από την θέση του. Προεπιλεγμένο είναι το RadioButton Όλα τα αξιοθέατα. Αν επιλεγεί τώρα το RadioButton Όσα βρίσκονται σε απόσταση, εμφανίζεται ένα TextBox, στο οποίο μπορεί ο χρήστης να γράψει την απόσταση που θέλει. Όταν τώρα πατηθεί το κουμπί Πίσω, τότε γίνεται έλεγχος για το ποια κατηγορία έχει επιλέξει ο χρήστης, ώστε το όνομά της να προστεθεί στο Label. Στην συνέχεια ενεργοποιείται το κουμπί Εύρεση, και επιλέγεται το TabPage Μενού. Η μορφή που έχει το TabPage, αφού έχουμε επιλέξει ποια αξιοθεάτα θα εμφανιστούν 230

231 Όταν ο χρήστης επιστρέψει στο πρώτο TabPage, παρατηρεί ότι τώρα το κουμπί Εύρεση είναι ενεργοποιημένο ενώ ανάμεσα από το Panel και το κουμπί Εύρεση έχει εμφανιστεί ένα κειμενάκι, το οποίο πληροφορεί τον χρήστη για το περιεχόμενο των επιλογών του. Τώρα μπορεί είτε να πατήσει το πλήκτρο ώστε να προβληθεί ο χάρτης με την θέση του και τα αξιοθέατα που επέλεξε, είτε να αλλάξει τα αξιοθέατα που θέλει να προβληθούν, ακολουθώντας ξανά την ίδια διαδικασία. Όταν πατηθεί το κουμπί Εύρεση, αρχικά γίνεται ένας έλεγχος για αν έχει εμφανιστεί το TreeView. Aν όντως συμβαίνει αυτό τότε στην μεταβλητή plithos αποθηκέυεται ο αριθμός των αξιοθεάτων που έχει επιλεγεί. If TreeView2.Visible = True Then For i = 0 To treenodes - 1 If TreeView2.Nodes(i).Checked Then plithos += 1 End If Next Κατόπιν πραγματοποιείται ένας έλεγχος με βάση την τιμή της μεταβλητής plithos. Αν είναι διάφορη του μηδενός, έχουν επιλεγεί δηλαδή κάποια αξιοθέατα, τότε περνάμε την μεταβλητή plithos στην μεταβλητή nums της κλάσης viewpois, ενώ στην συνέχεια δηλώνουμε το μέγεθος των πινάκων latalongs και names της viewpois. Παράλληλα δηλώνουμε και τo zoom, με το οποίο θέλουμε να εμφανιστεί ο χάρτης. If plithos <> 0 Then _viewpois.nums = plithos _viewpois.latalongs = New LatLong(plithos) {} 231

232 _viewpois.latalongs(0) = New LatLong() _viewpois.names = New String(plithos) {} _viewpois.zoom = 1.8 End If Ακολούθως ορίζουμε τις συντεταγμένες, αρχικά της τρέχουσας θέσης του χρήστη και στην συνέχεια των αξιοθεάτων, με παρόμοιο τρόπο με εκείνους που έχουν περιγραφθεί προηγουμένως για αντίστοιχες περιπτώσεις. If _makeroute.dokimi = 0 Then cn.open() datacommand = New SqlCeCommand("SELECT long,lat FROM stoixeia WHERE poi_name='arxi'", cn) reader = datacommand.executereader() If reader.read() Then _viewpois.latalongs(0).longitude = reader.getdouble(0) _viewpois.latalongs(0).latitude = reader.getdouble(1) End If cn.close() Else _viewpois.latalongs(0).latitude = _makeroute.currentposition(0).latitude _viewpois.latalongs(0).longitude = _makeroute.currentposition(0).longitude End If _viewpois.names(0) = "Είστε Εδώ" 232

233 plithos = 1 cn.open() For i = 0 To treenodes - 1 If TreeView2.Nodes(i).Checked Then datacommand = New SqlCeCommand("SELECT long,lat FROM stoixeia WHERE poi_name='" & TreeView2.Nodes(i).Text & "'", cn) reader = datacommand.executereader() If reader.read() Then _viewpois.latalongs(plithos) = New LatLong() _viewpois.latalongs(plithos).longitude = reader.getdouble(0) _viewpois.latalongs(plithos).latitude = reader.getdouble(1) _viewpois.names(plithos) = TreeView2.Nodes(i).Text plithos += 1 End If End If Next cn.close() Αφού δόθηκαν στην κλάση viewpois όλα τα απαραίτητα στοιχεία για την δημιουργία του χάρτη, κατόπιν προστίθεται και το πλήκτρο Πληροφορίες Αριθμών. MenuItem1.MenuItems.Add(MenuNumInformation) 233

234 Αν όμως τώρα ο χρήστης δεν έχει επιλέξει κάποιο από τα αξιοθέατα που προβάλλονται στο TreeView εκτελείται ο επόμενος κώδικας, ο οποίος είναι παραπλήσιος με τον κώδικα που περιγράφθηκε προηγουμένως. Μια διαφορά υπάρχει στο γεγονός ότι γίνεται αναζήτηση μόνο για την τρέχουσα θέση του χρήστη, αφού αξιοθέατα δεν έχουν επιλεχθεί. _viewpois.nums = 0 _viewpois.latalongs = New LatLong(0) {} _viewpois.latalongs(0) = New LatLong() _viewpois.names = New String(0) {} _viewpois.names(0) = "Είστε Εδώ" If _makeroute.dokimi = 0 Then cn.open() datacommand = New SqlCeCommand("SELECT long,lat FROM stoixeia WHERE poi_name='arxi'", cn) reader = datacommand.executereader() If reader.read() Then _viewpois.latalongs(0).longitude = reader.getdouble(0) _viewpois.latalongs(0).latitude = reader.getdouble(1) End If cn.close() Else _viewpois.latalongs(0).latitude = _makeroute.currentposition(0).latitude 234

235 _viewpois.latalongs(0).longitude = _makeroute.currentposition(0).longitude End If Μια άλλη διαφορά είναι πως τώρα δεν προστίθεται το πλήκτρο Πληροφορίες Αριθμών, αλλά το πλήκτρο Zoom, ώστε ο χρήστης να έχει την δυνατότητα να κάνει Zoom In και Zoom Out στην θέση του. MenuItem1.MenuItems.Add(MenubtnZoom) Ο λόγος που το πλήκτρο Zoom προστίθεται μόνο εδώ και όχι και όταν ο χρήστης έχει επιλέξει να εμφανίζονται αξιοθέατα, έχει να κάνει με την κλάση ViewByBoundingLocations, η οποία χρησιμοποιείται από την κλάση viewpois για τον τρόπο προβολής του χάρτη. Επειδή, όπως αναφέραμε και πιο πριν, η συγκεκριμένη κλάση δημιουργεί τον χάρτη με τέτοιο τρόπο ώστε να συμπεριλαμβάνονται όλα τα σημεία που ορίζονται. Το κέντρο αυτής της όψης δεν είναι ένα σημείο, αλλά το κέντρο του χάρτη που δημιουργείται. Το zoom γίνεται πάντα με βάση το κέντρο του χάρτη. Οπότε αν προσθέταμε το πλήκτρο Zoom και στην περίπτωση που είχαμε και προβολή αξιοθεάτων, το ζουμάρισμα θα γινότανε με βάση το κέντρο του χάρτη. Με αυτό τον τρόπο, από το πρώτο κιόλας zoom, θα χανότανε σίγουρα κάποια αξιοθέατα, τα οποία βρίσκονται στα άκρα τις εικόνας. Κάνοντας συνεχώς zoom στο κέντρο του χάρτη, θα έφτανε ο χάρτης σε μια κατάσταση που δεν θα περιελάμβανε κάποιο από τα σημεία που ορίσαμε να προβληθούν, αλλά θα έδειχνε απλά κάποιους δρόμους. Στην συνέχεια στέλνουμε στην viewpois τις διαστάσεις του PictureBox, στο οποίο θα εμφανιστεί ο χάρτης, και στην συνέχεια καλούμε την συνάρτηση CreateMap της viewpois και αποθηκεύουμε την εικόνα που επιστρέφει στο PictureBox pbroutepoi. 235

236 _viewpois.height = pbroutepoi.height _viewpois.width = pbroutepoi.width pbroutepoi.image = _viewpois.createmap Στην συνέχεια η μεταβλητή poischecked παίρνει την τιμή True. poischecked = True Αν τώρα έχει εμφανιστεί το Panel, δηλαδή ο χρήστης έχει επιλέξει να προβληθούν αξιοθέατα μιας γενικής κατηγορίας, τότε εκτελείται ο επόμενος κώδικας, ο οποίος είναι ίδιος με τον κώδικα που εκτελείται όταν ο χρήστης ζητήσει κατά την κίνηση σε μια διαδρομή να βρεί κάποια γενικά αξιοθέατα. latlongs = New LatLong(0) {} latlongs(0) = New LatLong() If _makeroute.dokimi = 0 Then cn.open() datacommand = New SqlCeCommand("SELECT long,lat FROM stoixeia WHERE poi_name='arxi'", cn) reader = datacommand.executereader() If reader.read() Then latlongs(0).longitude = reader.getdouble(0) latlongs(0).latitude = reader.getdouble(1) End If cn.close() 236

237 Else latlongs(0).longitude = _makeroute.currentposition(0).longitude latlongs(0).latitude = _makeroute.currentposition(0).latitude End If For i = 0 To ListBox2.Items.Count - 1 If ListBox2.SelectedIndex = i Then _generalpois1.entityname = ListBox2.Text End If Next If PosGPois = True Then _generalpois1.distance = txtgpoisdistance.text _generalpois1.mylatlongs = New LatLong(0) {} _generalpois1.mylatlongs(0) = New LatLong() _generalpois1.mylatlongs(0).latitude = latlongs(0).latitude _generalpois1.mylatlongs(0).longitude = latlongs(0).longitude End If _generalpois2.foundentities = _generalpois1.getresults _generalpois2.entitiesnum = _generalpois1.entitiesnum _generalpois2.mylatlongs = New LatLong(0) {} _generalpois2.mylatlongs(0) = New LatLong() _generalpois2.mylatlongs(0).latitude = latlongs(0).latitude 237

238 _generalpois2.mylatlongs(0).longitude = latlongs(0).longitude _generalpois2.height = pbroutepoi.height _generalpois2.width = pbroutepoi.width pbroutepoi.image = _generalpois2.createmap MenuItem1.MenuItems.Add(MenuNumInformation) _viewpois.nums = 0 Τέλος υπάρχει η περίπτωση ο χρήστης να έχει επιλέξει το RadioButton Κανένα Αξιοθέατο. Ο κώδικας που εκτελείται είναι ακριβώς ίδιος με τον κώδικα που περιγράφθηκε πιο πάνω, όταν ο χρήστης έχει επιλέξει να προβληθούν και προσωπικά του αξιοθέατα, αλλά δεν έχει κάνει Check κάποιο από αυτά. _viewpois.latalongs = New LatLong(0) {} _viewpois.latalongs(0) = New LatLong() _viewpois.names = New String(0) {} _viewpois.names(0) = "Είστε Εδώ" If _makeroute.dokimi = 0 Then cn.open() datacommand = New SqlCeCommand("SELECT long,lat FROM stoixeia WHERE poi_name='arxi'", cn) reader = datacommand.executereader() 238

239 If reader.read() Then _viewpois.latalongs(0).longitude = reader.getdouble(0) _viewpois.latalongs(0).latitude = reader.getdouble(1) End If cn.close() Else _viewpois.latalongs(0).latitude = _makeroute.currentposition(0).latitude _viewpois.latalongs(0).longitude = _makeroute.currentposition(0).longitude End If _viewpois.height = pbroutepoi.height _viewpois.width = pbroutepoi.width pbroutepoi.image = _viewpois.createmap MenuItem1.MenuItems.Add(MenubtnZoom) Αφού δημιουργηθεί και εμφανιστεί ο χάρτης, στην συνέχεια προστίθεται και προβάλλεται το TabPage Χάρτης Γεν. Αξιοθεάτων If poismap2 = False Then poismap1 = TabControl1.TabPages.Count TabControl1.TabPages.Insert(poisMap1, poismap) poismap2 = True 239

240 TabControl1.SelectedIndex = poismap1 Else TabControl1.SelectedIndex = poismap1 End If End Sub Όταν τώρα εμφανιστεί αυτό το TabPage, ανάλογα με το αν υάρχουν ή όχι και αξιοθέατα, έχουν προστεθεί και αντίστοιχα πλήκτρα στο πλήκτρο Επιλογές Πλήκτρο Zoom Το πλήκτρο Ζοοm περιέχει δυο άλλα πλήκτρα, το ZoomIn και ZoomOut. Με το πρώτο μειώνεται η τιμή της μεταβλητής zoom, οπότε ο χάρτης δείχνει από πιο κοντά την τρέχουσα θέση του χρήστη, ενώ με το ZoomOut αυξάνεται η τιμή της zoom, οπότε η τρέχουσα θέση εμφανίζεται από πιο μακρινή απόσταση. Και στις δυο περιπτώσεις ξανακαλείται η συνάρτηση CreateMap της viewpois, και δημιουργείται ένας νέος χάρτης, με βάση την νέα τιμή της zoom. zoom -= 0.3 _viewpois.zoom = zoom pbroutepoi.image = _viewpois.createmap Από εδώ και στο εξής, οι επιλογές που εμφανίζονται στην φόρμα, είναι ίδιες με εκείνες που εμφανίζονται κατά την διάρκεια της κίνησης σε μια διαδρομή. Ο χρήστης μπορεί να βρει μια διαδρομή προς ένα αξιοθέατο, μπορεί να δει πληροφορίες για την διαδρομή, αλλά και να πραγματοποιήσει μια κίνηση πάνω στην διαδρομή. 240

241 Φόρμα POIS Στην συγκεκριμένη φόρμα ο χρήστης μπορεί να δει πληροφορίες σχετικά με τα προσωπικά του αξιοθέατα, να προσθέσει κάποιο καινούργιο, ενώ μπορεί να αλλάξει και τις κατηγορίες των γενικών αξιοθεάτων που τον ενδιαφέρουν. Η φόρμα περιέχει ένα TabControl με εφτά TabPages. Όταν φορτώνεται για πρώτη φορά η φόρμα Pois, τρέχει η υπορουτίνα Load, η οποία έχει παρόμοια λειτουργία με την αντίστοιχη υπορουτίνα που τρέχει όταν φορτώνεται η φόρμα Map. Αποθηκεύονται σε μεταβλητές τύπου TabPage τα TabPages του TabControl, αφαιρούνται όλα ώστε να παραμείνει μόνο το TabPage στην θέση 0, ενώ αφαιρούνται και όλα τα πλήκτρα, που υπάρχουν στο αριστερό πλήκτρο της συσκευής. Η πρώτη εικόνα που φαίνεται στον χρήστη, όταν φορτώνεται η φόρμα είναι η ακόλουθη. Αρχική μορφή της φόρμας POIS 241

242 Με το πλήκτρο Αρχική, επιστρέφουμε στην φόρμα επιλογών. Πατώντας το κουμπί Συνέχεια, εμφανίζεται το εξής TabPage Επιλογές Αξιοθεάτων Σε αυτό το TabPage εμφανίζονται οι επιλογές που δίνει η φόρμα. Όπως φαίνεται και από την προηγούμενη εικόνα, ο χρήστης μπορεί να προσθέσει την διεύθυνση ενός προσωπικού αξιοθέατου, να δει πληροφορίες σχετικά με τα ήδη καταχωρημένα αξιοθέατα, ενώ μπορεί να δει και ποιες κατηγορίες γενικών αξιοθεάτων έχει επιλέξει. 242

243 Προσθήκη Αξιοθεάτου Το TabPage Προσθήκη περιλαμβάνει δυο Panel, τα PanelAddPoi και PanelAddNew και ένα Label. Το Label, το κείμενο του οποίου είναι Εισάγετε την διεύθυνση του Αξιοθέατου, εμφανίζεται μόνο όταν ο χρήστης βλέπει το Panel PanelAddPoi. Ο λόγος που το Label δεν είναι τμήμα του συγκεκριμένου Panel, είναι ότι σε εκείνη την περίπτωση το Panel θα έπιανε όλη την οθόνη. Το γεγονός αυτό θα είχε ως συνέπεια το δεύτερο Panel, το PanelAddNew, να θεωρείται από το πρόγραμμα ως τμήμα του προηγούμενου Panel, και όχι σαν ξεχωριστό Panel όπως θέλουμε εμείς. Το πρώτο Panel θα είναι Visible, ενώ το δεύτερο όχι. Αυτό έχει ως αποτέλεσμα όταν εμφανιστεί το συγκεκριμένο TabPage, ο χρήστης να βλέπει μόνο το Panel PanelAddPoi, το οποίο έχει την παρακάτω μορφή: Προσθήκη Αξιοθέατου 243

244 Όταν ο χρήστης πατήσει το κουμπί Καταχώρηση, αρχικά στην μεταβλητή addresstxt αποθηκεύεται η διεύθυνση του αξιοθεάτου (όνομα οδού και αριθμός) με την ίδια μορφή που είναι αποθηκευμένες οι διευθύνσεις στην βάση, ώστε να γίνει κατευθείαν έλεγχος για το αν υπάρχει άλλο αξιοθέατο στην ίδια διεύθυνση. Η παράμετρος Trim του Property Text χρησιμοποιείται ώστε να αφαιρεθούν, από την αρχή και το τέλος του κειμένου, τα κενά, αν τυχόν υπάρχουν. addresstxt = txtnum.text.trim & " " & txtstreet.text.trim & " Street" Στην συνέχεια ελέγχεται η μεταβλητή poisaddchoice. Για να αποθηκεύσουμε μια διεύθυνση, θα πρέπει ο χρήστης να έχει δώσει υποχρεωτικά όνομα αξιοθεάτου, όνομα οδού και αριθμό. Ο ταχυδρομικός κώδικας δεν είναι απαραίτητος, γιατί το πρόγραμμα είναι σε θέση να μας επιστρέψει μια λίστα διευθύνσεων, με την οδό και τον αριθμό που δώσαμε, μαζί με τον ταχυδρομικό κώδικα. Αν πατήσουμε Καταχώρηση και δεν έχουμε δώσει ταχυδρομικό κώδικα, μας επιστρέφει μια λίστα, επιλέγουμε την διεύθυνση που θέλουμε, και μετά πατάμε ξανά καταχώρηση ώστε να γίνει η εισαγωγή της διεύθυνσης στην βάση. Για το λόγο αυτό θα πρέπει να γνωρίζει το πρόγραμμα, αν είναι η πρώτη φορά που πατάμε το κουμπί ή η δεύτερη, ώστε να εκτελέσει τον αντίστοιχο κώδικα. Τον ρόλο αυτό παίζει η μεταβλητή poisaddchoice. Αν είναι μηδέν γίνεται ένας έλεγχος για το αν ο χρήστης έχει πληκτρολογήσει ταχυδρομικό κώδικα. If txtpostal.text <> String.Empty Then Αν έχει πληκτρολογήσει, γίνεται έλεγχος για το αν υπάρχει στην ίδια διεύθυνση άλλο αξιοθέατο. Αν δεν βρεθεί κάποιο αξιοθέατο, γίνεται έλεγχος για το αν υπάρχει αξιοθέατο με το ίδιο όνομα. Σε περίπτωση που υπάρχει αξιοθέατο στην ίδια διεύθυνση, εμφανίζεται το αντίστοιχο μήνυμα, ενώ καθαρίζονται και όλα τα 244

245 TextBoxes. Αν τώρα υπάρχει αξιοθέατο με το ίδιο όνομα, τότε εμφανίζεται το αντίστοιχο μήνυμα, ενώ καθαρίζεται μόνο το TextBox Όνομα. Η μεταβλητή exist είναι μια μεταβλητή, η οποία χρησιμοποιείται σαν δείκτης για το αν όντως υπάρχει άλλο αξιοθέατο. Αν δεν υπάρχει, οπότε η τιμή του δεν μεταβάλλεται και δεν γίνεται True (exist = False), τότε καλείται η κλάση getaddress, στην οποία δίνουμε την διεύθυνση του αξιοθεάτου και τον ταχυδρομικό κώδικα, και αποθηκεύουμε τα αποτελέσματα που θα γυρίσει στην μεταβλητή getresults. Ο λόγος που χρησιμοποιούμε μεταβλητή τύπυ FindReslts και όχι FindReslt, παρόλο που στην συγκεκριμένη περίπτωση η κλάση θα μας επιστρέψει ένα, το πολύ, αποτέλεσμα, είναι ότι η κλάση επιστρέφει μια μεταβλητή τύπου FindReslts, την οποία δεν θα μπορούσαμε να αποθηεκύσουμε σε μεταβλητή τύπου FindReslt. Αν τώρα η getresults περιέχει αποτέλεσμα, αν δηλαδή υπάρχει διεύθυνση, τότε αποθηκεύουμε τις συντεταγμένες του αποτελέσματος στις αντίστοιχες μεταβλητές, και εισάγουμε τα δεδομένα στην βάση. Επειδή τώρα στην βάση έχει προστεθεί ένα ακόμη προσωπικό αξιοθέατο, θα πρέπει αυτό να προστεθεί και στο TreePersonalPois, το οποίο είναι το TreeView που περιέχει τα προσωπικά αξιοθέατα στο TabPage Αξιοθέατα, ενώ παράλληλα αυξάνουμε και την μεταβλητή treenodes. Στην συνέχεια καθαρίζουμε όλα τα TextBox και εμφανίζεται το Panel PanelAddNew. Σε περίπτωση που η η getresults δεν περιέχει αποτέλεσμα, δεν έχει βρεθεί δηλαδή κάποια διεύθυνση, τότε εμφανίζεται το μήνυμα Δεν βρέθηκε κάποια διεύθυνση και καθαρίζονται όλα τα TextBox. Αν τώρα δεν υπάρχει ταχυδρομικός κώδικας, γίνεται έλεγχος μόνο για το αν το όνομα που θέλει να δώσει ο χρήστης υπάρχει ήδη. Ο λόγος είναι ότι το πιθανότερο είναι να επιστρεφούν περισσότερα από ένα αποτελέσματα. Αν επιστραφεί μόνο ένα αποτέλεσμα, τότε ο έλεγχος για το αν υπάρχει στην ίδια διεύθυνση άλλο αξιοθέατο, θα πραγματοποιηθεί πριν την καταχώρηση. 245

246 Εάν τώρα δεν υπάρχει αξιοθέατεο με το ίδιο όνομα ή/και στην ίδια διεύθυνση καλείται η κλάση _getaddress, ώστε να βρεθούν οι συντεταγμένες της διεύθυνσης και να καταχωρηθούν στην συνέχεια στην βάση. Στην μεταβλητή getresults καταχωρεί τα αποτελέσματα της κλάσης _getaddress, ενώ στη μεταβλητή fr, που θα χρησιμοποιηθεί αργότερα, κατά την εκτέλεση του προγράμματος, αποθηκεύουμε κάθε φορά μόνο ένα από τα αποτελέσματα που βρίσκονται στην getresults. Αν τώρα τα αποτελέσματα που επιστρέφονται από την _getaddress είναι περισσότερα από ένα, πρέπει να εμφανιστούν όλα στον χρήστη, ώστε αυτός να επιλέξει αυτό που θέλει. Τα αποτελέσματα αποθηκεύονται στο ListBox ListboxPois, που υπάρχει στο TabPage Επιλογή Πρ.Αξιοθεάτου. Παράλληλα επιλέγεται το πρώτο αποτέλεσμα που καταχωρείται στο ListBoxPois. Στο ListBoxPois αποθυκεύουμε μόνο την διεύθυνση (όνομα δρόμου και αριθμό) και τον ταχυδρομικό κώδικα. Και αυτό γιατί αυτές είναι οι πληροφορίες που μας ενδιαφέρουν. Θα μπορούσαμε να αποθηκεύσουμε και άλλες πληροφορίες σχετικά με την διεύθυνση, όπως το να γράφεται και η πόλη (Αθήνα), ή η γενική περιοχή (Αττική), όπως επίσης και χώρα (Ελλάδα). If getresults.numberfound > 1 Then For Each fr In getresults.results ListBoxPois.Items.Add(fr.FoundLocation.Address.AddressLine & " " & fr.foundlocation.address.postalcode) Next ListBoxPois.SelectedIndex = 0 246

247 Στην συνέχεια εμφανίζεται το TabPage Επιλογή Πρ. Αξιοθεάτου, στο οποίο υπάρχει το ListBox με τις διευθύνσεις που βρεθήκανε. Προβολή όλων των Διευθύνσεψν που βρεθήκανε Αντίθετα, αν ο αριθμός των αποτελεσμάτων που θα επιστραφούν είναι ένα, εκτελείται ο ίδιος κώδικας, με εκείνον όταν έχουμε δώσει και ταχυδρομικό κώδικα και μας επιστρέφεται αποτέλεσμα. Σε περίπτωση που δεν επιστραφεί κάποιο αποτέλεσμα, εμφανίζεται το ίδιο μήνυμα με την αντίστοιχη περίπτωση που έχουμε δώσει ταχυδρομικό κώδικα. 247

248 Όταν εμφανιστεί το TabPage Επιλογή Πρ. Αξιοθεάτου, ο χρήστης μπορεί να επιλέξει την διεύθυνση που επιθυμεί, και να πατήσει το κουμπί Επιλογή. Ο κώδικας ελέγχει το ListBox για να βρει το στοιχείο που έχει επιλέξει ο χρήστης. Όταν το βρει, τότε γράφει στο TextBox που αναφέρεται στον ταχυδρομικό κώδικα στο TabPage Προσθήκη, ενώ αποθηκεύει στην μεταβλητή addressresult όλο το αποτέλεσμα που έχει επιλέξει ο χρήστης. For i = 0 To ListBoxPois.Items.Count - 1 If ListBoxPois.SelectedIndex = i Then txtpostal.text = _getaddress1.getresults.results(i).foundlocation.address. PostalCode addressresult = _getaddress1.getresults.results(i) End If Next Στην συνέχεια αλλάζει την τιμή της μεταβλητής poisaddchoice, και την κάνει 1, ώστε στην συνέχεια να εκτελεστεί ο κατάλληλος κώδικας πατώντας το κουμπί Καταχώρηση, ενώ επιστρέφει τον χρήστη στο TabPage Προσθήκη, χωρίς να αφαιρεί το TabPage Επιλογή Πρ. Αξιοθεάτου. Και αυτό γιατί ο χρήστης μπορεί να θελήσει να αλλάζει τον ταχυδρομικό κώδικα. Οπότε μπορεί να επιστρέψει στο TabPage Επιλογή Πρ. Αξιοθεάτου, να επιλέξει κάποια άλλη διεύθυνση και πατήσει ξανά το κουμπί Επιστροφή. poisaddchoice = 1 TabControl1.SelectedIndex = 0 248

249 Όταν τώρα ο χρήστης επιστρέψει στο TabPage Προσθήκη, διαπιστώνει ότι στο TextBox Ταχυδρομικός κώδικας έχει προστεθεί ο ταχυδρομικός κώδικας της διεύθυνσης που είχε επιλέξει. Αυτόματη καταχώρηση ταχυδρομικού κώδικα 249

250 Αν τώρα πατήσει το πλήκτρο Καταχώρηση, θα εκτελεστεί ο ακόλουθος κώδικας : If poisaddchoice = 1 Then cn.open() datacommand = New SqlCeCommand(" SELECT address, zipcode FROM stoixeia WHERE address = '" & addresstxt & "' AND zipcode= '" & txtpostal.text & "'", cn) reader = datacommand.executereader() If reader.read() Then Label5.Text = "Υπάρχει ήδη αξιοθέτο στην συγκεκριμένη διεύθυνση" cn.close() txtpostal.text = String.Empty Else latitude = addressresult.foundlocation.latlong.latitude longtitude = addressresult.foundlocation.latlong.longitude datacommand = New SqlCeCommand(" INSERT INTO stoixeia (userid, poi_name, address, city, zipcode, long, lat, rowguid) VALUES ('Gkintsioudis','" & txtname.text & "','" & addresstxt & "', 'Athens', '" & txtpostal.text & "','" & longtitude & "', '" & latitude & "', NewID() )", cn) number = datacommand.executenonquery() cn.close() poisaddchoice = 0 TreePersonalPois.Nodes.Add(txtname.Text) 250

251 treenodes += 1 TreePersonalPois.Nodes.Add(txtname.Text) treenodes += 1 txtname.text = String.Empty txtstreet.text = String.Empty txtnum.text = String.Empty txtpostal.text = String.Empty PanelAddPoi.Visible = False Label5.Visible = False PanelAddNew.Visible = True If TabControl1.TabPages.Count = 2 Then TabControl1.TabPages.RemoveAt(1) End If End If End If Πριν γίνει η καταχώρηση του αξιοθεάτου, γίνεται ένας έλεγχος για το αν υπάρχει αξιοθέατο στην ίδια διεύθυνση, έλεγχος που δεν έγινε προηγουμένως γιατί δεν γνωρίζαμε τον ταχυδρομικό κώδικα που ήθελε ο χρήστης. Αν βρεθεί ίδια διεύθυνση, τότε εμφανίζεται ένα μήνυμα στον χρήστη και καθαρίζει το πεδίο του ταχυδρομικού κώδικα, ώστε ο χρήστης να επιλέξει κάποιον άλλο. Σε περίπτωση που δεν έχει βρεθεί, τότε γίνεται εισαγωγή των δεδομένων στην βάση. Η μόνη διαφοροποίηση με βάση τις προηγούμενες εισαγωγές που περιγραφθήκανε προηγουμένως, είναι πως τώρα τις συντεταγμένες του σημείου τις παίρνουμε από την 251

252 μεταβλητή addressresult, στην οποία έχει αποθηκευτεί το αποτέλεσμα που επέλεξε από το ListBox ListBoxPois ο χρήστης. latitude = addressresult.foundlocation.latlong.latitude longtitude = addressresult.foundlocation.latlong.longitude Και σε αυτή την περίπτωση, όταν ολοκληρωθεί η καταχώρηση εμφανίζεται το Panel PanelAddNew. Το συγκεκριμένο Panel περιέχει ένα Label και δυο κουμπιά, όπως φαίνεται και στην επόμενη εικόνα. Δυνατότητα αποθήκευσης και άλλου αξιοθεάτου 252

253 Πατώντας ο χρήστης το κουμπί Ναι, εμφανίζεται ξανά το Panel PanelAddPoi, ενώ παράλληλα διαγράφονται όλα τα στοιχεία που βρίσκονται στο ListBox ListBoxPois, ώστε την επόμενη φορά που θα χρειαστεί, να παρουσιαστούν μόνο τα αποτελέσματα της νέας αναζήτησης, χωρίς τα προηγούμενα αποτελέσματα. Αντίθετα, αν επιλέξει το κουμπί Όχι, τότε διαγράφονται πάλι όλα τα στοιχεία που βρίσκονται στο ListBoxPois, αλλά εμφανίζεται το TabPage Επιλογές. 253

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

255 Αν ο χρήστης επιλέξει το RadioButton Επιλογή αξιοθεάτων, τότε εμφανίζεται ένα TreeView, από το οποίο ο χρήστης μπορεί να επιλέξει ποια αξιοθέτα θέλει να δει. Επιλογή συγκεκριμένων αξιοθεάτων Όταν ο χρήστης πατήσει το κουμπί Προβολή, η εφαρμογή συνδέεται με την βάση poi, και ανακτώνται οι διευθύνσεις και οι ταχυδρομικοί κώδικες των αξιοθεάτων που έχουν επιλεγεί. Αν έχει επιλεγεί το πρώτο RadioButton, ανακτώνται από την βάση όλα τα αξιοθέατα, τα οποία εμφανίζονται στο Datagrid (DatagridShowPois). Αντίθετα, εάν έχει επιλεγεί το δεύτερο RadioButton, επιλέγονται από την βάση μόνο όσα αξιοθέατα έχουν επιλεγεί από τον χρήστη. Το 255

256 Datagrid βρίσκεται στο TabPage Στοιχεία. Όταν γεμίσουμε το Datagrid με τα στοιχεία, τότε εμφανίζεται το TabPage Στοιχεία. Προβολή των στοιχείων των αξιοθεάτων Όπως φαίνεται και από τις οδηγίες που υπάρχουν στο επάνω μέρος του TabPage, αν ο χρήστης θέλει να δει πληροφορίες σχετικά με άλλα αξιοθέατα, θα πρέπει να πατήσει το κουμπί Πίσω, με το οποίο θα επιστρέψει στο TabPage Αξιοθέατα, και θα είναι σε θέση να επιλέξει άλλα αξιοθέατα. 256

257 Κατηγορίες Γενικών Αξιοθεάτων Με την επιλογή του συγκεκριμένου κουμπιού, ο χρήστης μεταφέρει στο TabPage Γεν. Αξιοθέατα, στο οποίο μπορεί να δει τις κατηγορίες γενικών αξιοθεάτων που έχει ήδη επιλεγμένες, ενώ μπορεί και να τις αλλάξει. Αλλαγή των κατηγοριών Γενικών Αξιοθεάτων που ενδιαφέρουν τον χρήστη Το συγκεκριμένο TabPage περιλαμβάνει δυο Panels (PanelGPoisShow και PanelGPoisConfirm), και ένα Label που εμφανίζεται μαζί με το PanelGPoisShow, αλλά δεν ανήκει στο Panel. Αρχικά ορατό στους χρήστες είναι το Panel 257

258 PanelGPoisShow. Το συγκεκριμένο Panel περιλαμβάνει ένα TreeView ( TreeGPois) και το κουμπί Καταχώρηση (btngpoisadd). Όταν ο χρήστης πατήσει το κουμπί γίνεται καταχώρηση των νέων αξιοθεάτων που έχει επιλέξει, ενώ στην συνέχεια γίνεται ορατό το Panel PanelGPoisConfirm. Εάν τώρα ο χρήστης πατήσει το κουμπί Καταχώρηση, τότε διαγράφονται όλα τα στοιχεία που υπάρχουν στον πίνακα GPois της βάσης pois, και στην συνέχεια αποθηκεύονται οι νέες επιλογές που έχει πραγματοποιήσει ο χρήστης. Το σημείο που θα πρέπει να προσεχθεί είναι μετά την καταχώρηση των στοιχείων στην βάση. Οι διάφορες αλλαγές που κάναμε στις κατηγορίες που μας ενδιαφέρουν επηρεάζουν και τα TreeViews και τα ListBoxes, που βρίσκονται στην φόρμα Map, και τα στοιχεία των οποίων είναι οι κατηγορίες γενικών αξιοθεάτων που έχει επιλέξει ο χρήστης. Όπως είδαμε και προηγουμένως, τα ΤreeViews και τα ListBoxes γεμίζουν με στοιχεία από την υπορουτίνα Load, η οποία όμως τρέχει μόνο την πρώτη φορά που θα ανοίξει ο χρήστης την φόρμα. Έτσι αν ο χρήστης έχει τρέξει πρώτα την φόρμα Map, στην συνέχεια αλλάξει τις κατηγορίες γενικών αξιοθεάτων και μετά επιστρέψει ξανά στην Map, τα ΤreeViews και τα ListBoxes της θα περιέχουν άλλες κατηγορίες από αυτές που έχει επιλέξει ο χρήστης. Για το λόγο αυτό εκτελείτε ο παρακάτω κώδικας: With Map If.used = True Then Dim listboxitem As Integer listboxitem =.ListGPois.Items.Count For i = 1 To listboxitem.listgpois.items.removeat(listboxitem - i) Next 258

259 listboxitem =.ListBox3.Items.Count For i = 1 To listboxitem.listbox3.items.removeat(listboxitem - i) Next listboxitem =.ListBox2.Items.Count For i = 1 To listboxitem.listbox2.items.removeat(listboxitem - i) Next cn.open() datacommand = New SqlCeCommand("SELECT poi_name FROM GPois", cn) reader = datacommand.executereader() While reader.read().listgpois.items.add(reader.getstring(0)).listbox2.items.add(reader.getstring(0)).listbox3.items.add(reader.getstring(0)) End While cn.close() End If End With 259

260 Με την χρήση του With, μπορούμε να πειράξουμε μεταβλητές της Map μέσα από την συγκεκριμένη φόρμα. Όσες μεταβλητές έχουν τελεία από μπροστά τους, είναι μεταβλητές της Map. Αρχικά ελέγχουμε την μεταβλητή.used, ώστε να δούμε αν η Map έχει χρησιμοποιηθεί. Αν η τιμή της είναι True, έχει δηλαδή χρησιμοποιηθεί, τότε αφαιρούμε πρώτα όλα τα στοιχεία από τα ListBoxes της Map που μας ενδιαφέρει, και στην συνέχεια προσθέτουμε τα καινούργια στοιχεία. Αν δεν έχει χρησιμοποιηθεί, δεν κάνουμε κάτι, γιατί τα στοιχεία στα ListBoxes θα περαστούνε, όταν ο χρήστης χρησιμοποιήσει την φόρμα Map. Όταν ολοκληρωθεί η προσθήκη των νέων επιλογών του χρήστη σε όλα τα ListBoxes της φόρμας Map, εμφανίζεται το Panel PanelGPoisConfirm. Δυνατότητα προβολής των επιλεγμένων κατηγοριών 260

261 Εάν επιλέξει το κουμπί Nαι, τότε ξαναεμφανίζεται το προηγούμενο Panel, και μπορεί ο χρήστης να επεξεργαστεί ξανά την λίστα με τα γενικά αξιοθέατα. Εάν πατήσει το κουμπί Όχι, τότε μεταφέρεται στο TabPage Επιλογές. 261

262 5 Συμπεράσματα Μελλοντική Εργασία Όπως είδαμε, στην παρούσα διπλωματική δημιουργήθηκε μια Location-Based εφαρμογή, στην οποία έγινε προσπάθεια να προσαρμοστούν όσο το δυνατό περισσότεροι κανόνες της θεωρίας, ώστε η εφαρμογή που δημιουργήθηκε να είναι εύχρηστη για τον τελικό χρήστη. Οι δυνατότητες που δίνονται από την εφαρμογή είναι η εύρεση θέσης και η προσομοίωση της κίνησης του χρήστη, με παράλληλη δυνατότητα εμφάνισης και διαφόρων αξιοθεάτων. Η συγκεκριμένη εφαρμογή είναι σε θέση, με κάποιες βέβαια αλλαγές, να αποτελέσει μια εμπορική εφαρμογή. Όπως είδαμε, στην παρούσα εργασία χρησιμοποιήθηκε το MapPoint Web Service, στην ελεύθερη έκδοσή του, για την απεικόνιση σε χάρτη της τρέχουσας θέσης του χρήστη, αλλά και για την δημιουργία της διαδρομής στην οποία κινείται ο χρήστης. Εάν χρησιμοποιούνταν η δεύτερη έκδοση του προγράμματος, η οποία είναι επί πληρωμή, θα μπορούσαμε να κάνουμε αυτόματα κάποιες διαδικασίες, για τις οποίες τώρα έχουν γραφτεί αρκετές σειρές κώδικα. Ένα παράδειγμα είναι η εύρεση αξιοθεάτων σε συγκεκριμένη απόσταση από τον χρήστη, για την οποία υπάρχει έτοιμη εντολή στο MapPoint Web Service. Παράλληλα υπάρχουν και επιπλέον δυνατότητες, όπως είναι το reverse-encoding, το οποίο βρίσκει την διεύθυνση του σημείου που θέλουμε, από τις συντεταγμένες του. Οι αλλαγές αυτές θα βελτίωναν και την ταχύτητα απόκρισης της εφαρμογής. 262

263 Μια άλλη αλλαγή που θα βελτίωνε αισθητά την ταχύτητα του προγράμματος, είναι η χρήση ενός Location Server, όπως για παράδειγμα του MapPoint Location Server. Με την χρήση ενός τέτοιου τύπου server, μπορούμε άμεσα να εντοπίσουμε την θέση μιας φορητής συσκευής. Σε μια τέτοια περίπτωση δεν θα χρειαζόταν να έχουμε γράψει την κλάση MakeRoute, αφού η κίνηση του χρήστη καταγράφεται και απεικονίζεται σε πραγματικό χρόνο. Ένα επιπλέον πλεονέκτημα που θα είχαμε είναι ότι δεν θα έπρεπε να έχουμε τις διαδικασίες εύρεσης θέσης και εύρεσης διαδρομής στην ίδια φόρμα, αφού όπως αναλύσαμε και στο κεφάλαιο 4, ο λόγος που είναι μαζί έχει να κάνει με την αποθήκευση των μεταβολών της τρέχουσας θέσης του χρήστη. Με αυτό τον τρόπο θα κερδίζαμε πάρα πολύ σε ταχύτητα, αφού η συγκεκριμένη φόρμα είναι ιδιαίτερα βαριά, και καθυστερεί πάρα πολύ να φορτώσει την πρώτη φορά που την ανοίγει ο χρήστης. 263

264 6 Βιβλιογραφία [1] Virrantaus, K., Markkula, J., Garmash, A., Terziyan, Y.V. (2001). Developing GIS-Supported Location Based Services. In : Proceedings of the Second International Conference on Web Information Systems Engineering, Kyoto, Japan. [2] Steiniger, S., Neun, M., Edwardes, A. (2006), Foundations of Location Based Services. Ανάκτηση 12/5/2008 από World Wide Web : [3] GSM Association (2003). Location Based Services. Ανάκτηση 14/5/2008 από World Wide Web: [4] Beinat, E. and Dias, E. (2003). Location services and accuracy, An analysis for field work applications. Workpaper GIPSY project, Institute for Environmental Studies (IVM),Amsterdam 264

265 [5] Agrawal, S. C., Agrawal, S. (2003). Location Based Services, Aνάκτηση 25/5/2008 από World Wide Web : [6] Dana, P. (1994), Global Positioning System Overview, Ανάκτηση 10/5/2008 από World Wide Web : [7] Malm, A., Fagerberg, J., (2008). LBS Temperature Meter Ανάκτηση 13/5/2008 από World Wide Web : [8] Tiwari, R., Buse, S., Herstatt C. (2007). From Electronic To Mobile Commerce: Technology Convergence Enables Innovative Bussiness Services. Ανάκτηση από World Wide Web : Commerce.pdf. [9] Kakihara, M., Sørensen, C. (2002). Mobility: An Extended Perspective. In: Proceedings of the 35th Hawaii International Conference on System Sciences, Hawaii, USA. [10] Mahatanankoon, P., Wen, J., Lim, B. ( 2005 ) Consumer-based m- commerce: exploring consumer perception of mobile applications, Computer Standards & Interfaces, 27(4),

266 [11] Andreou, A. S., Chrysostomou, C., Leonidou, C., Mavromoustakos, S., Pitsillides, A., Samaras, G., Schizas, C. (2002). Mobile Commerce Applications and Services: A Design and Development Approach. Ανάκτηση από World Wide Web : [12] Wu, J. H., Wang, S. C., (2005) What drives mobile commerce? An empirical evaluation of the revised technology acceptance model, Information & Management, 42(5), [13] Wang, Y. S., Liao, Y. W. (2007) The conceptualization and measurement of m-commerce user satisfaction, Computers in Human Behavior, 23(1), [14] Gülçin Büyüközkan (2007), Determining the mobile commerce user requirements using an analytic approach, Computer Standards & Interfaces, In Press Corrected Proof [15] Rayport J., Jaworski B., (2001) Introduction to E-Commerce, New York, McGraw- Hill. [16] Benbasat, I., Lee, Y. E. (2003). Interface Design for Mobile Commerce. Communications of the.acm, 46 (12), [17] Dey, A., Abowd, G. (1999). Towards a Better Understanding of Context and Context-Awareness. In : Proceedings of the 1st international symposium on Handheld and Ubiquitous Computing. Karlsruhe, Germany. 266

267 [18] Obrenovic, Z., Abascal, J., Starcevic, D. (2007) Universal accessibility as a multimodal design issue, Communications of the ACM, 50 (5), [19] Buyukkokten O., Kaljuvee O., Garcia-Molina H., Paepcke A., Winograd A. (2002). Efficient web browsing on handheld devices using page and form summarization, ACM Transactions on Information Systems, 20 (1), [20] Pascoe J., Ryan N., Morse D. (2000). Using while moving: HCI issues in fieldwork environments, ACM Transactions on Computer-Human Interaction, 7 (3), [21] Perry K., Hourcade J.P. (2008), Evaluating one handed thumb tapping on mobile touchscreen devices. In : Proceedings of graphics interface 2008, Windsor, Ontario, Canada. [22] Schilit N., Adams N., Want R. (1994), Context-aware computing applications. In : Proceedings of the Workshop on Mobile Computing Systems and Applications, Santa Cruz, CA, USA. [23] Kristoffersen, S., Ljungberg, F. (1999), Designing Interaction Styles for a Mobile Use Context. In : Proceedings of the 1st international symposium on Handheld and Ubiquitous Computing, Karlsruhe, Germany. 267

268 [24] Brewster S., Leplâtre G., Crease M. (1998), Using Non-Speech Sounds in Mobile Computing Devices, In Proceedings of the First Workshop on Human Computer Interaction with Mobile Devices. Glasgow, Scotland. [25] Holland S., Morse D., Gedenryd H., (2002). AudioGPS: Spatial Audio Navigation with a Minimal Attention Interface, Personal and Ubiquitous Computing, 6 (4), [26] Wang Y. S., Lin H. H., Luarn P. (2006). Predicting consumer intention to use mobile service, Information Systems Journal, 16 (2), [27] Turban, E., King, D., Lee, J. & Viehland, D. (2004), Electronic Commerce: A Managerial Perspective 2004, Upper Saddle River, NJ, USA, Pearson Prentice Hall. [28] Pruthikrai Mahatanankoon, H. Joseph Wen, Billy Lim (2005), Consumerbased m-commerce: exploring consumer perception of mobile applications, Computer Standards & Interfaces, 27 ( 4), [29] Luarn, P., Lin, H. H., (2005) Toward an understanding of the behavioral intention to use mobile banking, Computers in human behavior, 21 (6), [30] David Jingjun Xu, Stephen Shaoyi Liao, Qiudan Li (2008), Combining empirical experimentation and modeling techniques: A design research approach for personalized mobile advertising applications, Decision Support Systems, 44 (3),

269 [31] Liao, S.S., Li, Q., Xu. D.J. (2005) A Bayesian Network-based framework for personalization in mobile commerce applications, Communications of AIS, 15 (28). [32] Zhang, D.S. (2003) Delivery of personalized and adaptive content to mobile devices: a framework and enabling technology, Communication of the AIS, 12 (13). [33] Tarasewich P. (2003) Designing Mobile Commerce Applications, Communications of the ACM, 46 (12). [34] Siau, Keng, Lim, Ee-Peng, Shen, Zixing (2001) Mobile Commerce: Promises, Challenges, and Research Agenda, Journal of Database Management, 12(3), [35] Liao, S. S., He, J. W., Heng Tang, T. (2004) A framework for context information management, Journal of Information Science, 30,

270 ΠΑΡΑΡΤΗΜΑ Α Δημιουργία Merge Replication Αρχικά ανοίγουμε το Microsoft SQL Server Management Studio, συνδεόμαστε στον server μας, όπως δείχνει και η επόμενη εικόνα. 270

271 Αφού συνδεθούμε στον server, μπορούμε να δούμε τις βάσεις που υπάρχουν σε αυτόν. Για την συγκεκριμένη εργασία, έχουνε δημιουργηθεί δύο βάσεις, η ID, η οποία περιέχει το username και το password κάθε χρήστη, και η βάση poi (Points of Interest), στην οποία είναι αποθηκευμένες οι διευθύνσεις που δηλώνει κάθε χρήστης ως point of interest. Θα μπορούσαμε να είχαμε δημιουργήσει μία μόνο βάση, με δυο tables, τα ID και poi, αλλά για λόγους, που θα εξηγηθούν στην συνέχεια, δημιουργήθηκαν δυο ξεχωριστές βάσεις. Αρχικά θα πρέπει να ρυθμίσουμε τον server μας ως Distributor και Publisher. Ανοίγοντας το φάκελο Replication, εμφανίζονται δυο υποφάκελοι με τις ονομασίες Local Publications και Local Subscriptions. Κάνουμε δεξί κλικ στον φάκελο Local Publications και επιλέγουμε New Publication, όπως φαίνεται και στην επόμενη εικόνα: 271

272 Επιλέγοντας το New Publication, εμφανίζεται ο New Publication Wizard, με την βοήθεια του οποίου θα δημιουργήσουμε μια νέα δημοσίευση βάσης (publication), ενώ σε περίπτωση που δεν έχουμε καθορίσει κάποιον server ως distributor, τότε μας βοηθάει να καθορίσουμε. Από την στιγμή που έχει δημιουργηθεί ο distributor, δεν μας ξαναρωτά. 272

273 273

274 Πατάμε Next και εμφανίζεται η επόμενη εικόνα Η πρώτη δουλειά που κάνει ο Publication Wizard, είναι να ελέγξει εάν ο server είναι διαμορφωμένος ώστε να λειτουργεί και ως distributor. Εάν δεν είναι, τότε εμφανίζεται η προηγούμενη εικόνα, που ρωτάει αν θέλουμε να διαμορφώσουμε τον server μας, ή αν υπάρχει κάποιος άλλος server που να είναι ήδη διαμορφωμένος. Επιλέγουμε να διαμορφώσει το server μας και πατάμε next. 274

275 Στην συνέχεια μας ζητείται να καθορίσουμε τον Snapshot Folder. Ο συγκεκριμένος φάκελος είναι ο φάκελος που χρησιμοποιεί ο Distributor ως ενδιάμεσο, ώστε να μεταφέρει δεδομένα από τον Publisher στον Subscriber. Εξ ορισμού ο Snapshot Folder δημιουργείται στην συγκεκριμένη διεύθυνση που φαίνεται. Πηγαίνουμε στον συγκεκριμένο φάκελο που μας λέει το πρόγραμμα, και δημιουργούμε ένα φάκελο με το όνομα ReplData. Αφού τον δημιουργήσουμε, θα πρέπει να τον κάνουμε share, ώστε να μπορεί να τον χρησιμοποιεί ο SQL Merge Agent του Distributor. Αρχικά πρέπει να αλλάξουμε τις ρυθμίσεις όλων των φακέλων. Επιλέγουμε Tools -> Folder Options, και διαλέγουμε το View. 275

276 Στο Advanced Settings βρίσκουμε την επιλογή Use simple file sharing (Recommended), όπως φαίνεται και στην εικόνα, και την απενεργοποιούμε. Στην συνέχεια κάνουμε δεξί κλικ στον φάκελο που έχουμε δημιουργήσει (ReplData) και επιλέγουμε Properties. Στο παράθυρο των Properties που έχει ανοίξει,επιλέγουμε το Sharing. 276

277 Κανονικά επιλεγμένο είναι η επιλογή Do not share this folder. Εμείς επιλέγουμε το Share this folder, και αυτόματα στο Share Name εμφανίζεται το όνομα του φακέλου. Επιστρέφουμε στον New Publication Wizard και προσθέτουμε στο τέλος της διεύθυνσης που γράφει, το όνομα του φακέλου που δημιουργήσαμε. Πατώντας ΟΚ εμφανίζεται η επόμενη εικόνα 277

278 στην οποία μας ζητείται να επιλέξουμε ποια βάση θέλουμε να κάνουμε publication, από τις βάσεις που περιέχει ο server. Επιλέγουμε την βάση ID και συνεχίζουμε. Στην συνέχεια μας ζητάει να επιλέξουμε το είδος του replication, για το οποίο θα χρησιμοποιηθεί η βάση μας. Μπορούμε να επιλέξουμε μόνο ένα είδος. Επιλέγουμε Merge Replication και συνεχίζουμε στο επόμενο βήμα 278

279 Αμέσως μετά θα πρέπει να επιλέξουμε την έκδοση του SQL Server που θα χρησιμοποιεί ο Subscriber. Έχουμε την δυνατότητα να διαλέξουμε περισσότερες από μια επιλογές. Στην συγκεκριμένη περίπτωση επιλέγουμε τον SQL Server 2005 Mobile Edition 279

280 Κατόπιν επιλέγουμε ποια στοιχεία της βάσης μας θα χρησιμοποιηθούν ως publication. Σε περίπτωση που η βάση μας έχει περισσότερα από ένα tables, μπορούμε να επιλέξουμε ποια από αυτά θέλουμε να δημοσιευτούν. 280

281 Εάν θέλουμε οι όποιες αλλαγές στα δεδομένα τις βάσης να γίνονται μόνο από τον Publisher, τότε επιλέγουμε το Highlighted table is download-only. Με αυτή την επιλογή τα δεδομένα που στέλνονται στον Subscriber είναι read-only, και δεν μπορεί να τα αλλάξει. Επειδή εμείς θέλουμε να μπορεί ο χρήστης να μεταβάλλει τα στοιχεία του πίνακα, παραδείγματος χάριν να αλλάξει το username ή το password, αφήνουμε την συγκεκριμένη επιλογή ως έχει και συνεχίζουμε στο επόμενο βήμα. Στην συνέχεια μας ενημερώνει ο Wizard ότι πρέπει να δημιουργήσει μια στήλη rowguid, έτσι ώστε τα στοιχεία να είναι μοναδικά, όχι μόνο μέσα στην βάση, αλλά γενικά. 281

282 Επιλέγουμε Next και συνεχίζουμε. Στην συνέχεια μπορούμε να προσθέσουμε κάποια φίλτρα, ώστε να μην αποστέλλονται όλα τα δεδομένα της βάσης του Publisher, αλλά επιλεγμένα δεδομένα. Τα φίλτρα μπορούμε να τα προσθέσουμε είτε τώρα είτε αργότερα μέσω του Management Studio. Οπότε συνεχίζουμε την διαμόρφωση του Publisher, και τα φίλτρα που μας χρειάζονται θα τα προσθέσουμε αργότερα. 282

283 Αμέσως μετά μπορούμε να επεξεργαστούμε τον Snapshot Agent. Ο Snapshot Agent δημιουργεί snapshots (στιγμιότυπα) της βάσης, την δεδομένη χρονική στιγμή που εκτελείται και τα αποθηκεύει στο Snapshot Folder που έχουμε δημιουργήσει προηγουμένως. 283

284 Η πρώτη από τις δύο επιλογές δημιουργεί αμέσως ένα στιγμιότυπο της βάσης. Με την δεύτερη επιλογή μπορούνε να καθορίσουμε κάθε πότε θα τρέχει ο Snapshot Agent. Ο προκαθορισμένο χρόνος είναι κάθε δυο εβδομάδες. Ανάλογα με τις απαιτήσεις του συστήματος που έχουμε μπορούμε να αλλάξουμε τον χρόνο που τρέχει ο Agent. Τα αφήνουμε ως έχει και πατάμε Next. Στην συνέχεια καθορίζουμε την ασφάλεια του Agent 284

285 Πατώντας το Security Settings εμφανίζεται το ακόλουθο πλαίσιο διαλόγου 285

286 Μπορούμε να επιλέξουμε είτε κάποιο Windows account ώστε να συνδέεται στον Agent, είτε το SQL Server Agent service Account. Πατάμε ΟΚ. Αμέσως μετά εμφανίζεται ξανά το παράθυρο Agent Security, έχοντας ως Snapshot Agent την επιλογή που κάναμε προηγουμένως. 286

287 Πατώντας Next εμφανίζεται το επόμενο πλαίσιο διαλόγου 287

288 Πατώντας Next είμαστε ένα βήμα πριν την δημιουργία του Distributor και του Publisher. Αν θέλουμε να δημιουργήσουμε ένα αρχείο, στο οποίο να αναφέρονται τα βήματα που ακολουθήσαμε για την δημιουργία των Distributor και Publisher, επιλέγουμε το Generate a script file with steps to create the publication. Στο επόμενο πλαίσιο διαλόγου μας ζητείται να δώσουμε όνομα στη δημοσίευση που δημιουργούμε. Γράφουμε το όνομα που θέλουμε και πατάμε Finish. Αμέσως ξεκινάει η διαδικασία δημιουργίας του Publication. 288

289 Αν ολοκληρωθεί επιτυχώς η διαδικασία, εμφανίζεται η επόμενη εικόνα : 289

290 Πατάμε Close και επιστρέφουμε στο Management Studio. Παρατηρούμε τώρα ότι στον υποφάκελο Local Publications του φακέλου Replication εμφανίζεται η βάση ID. 290

291 Στην συνέχεια θα πρέπει να κάνουμε την βάση μας διαθέσιμη μέσω Internet, ώστε να έχουν πρόσβαση σε αυτή οι φορητές συσκευές που θα συνδέονται μαζί της. Κάνουμε δεξί κλικ στην βάση και επιλέγουμε Configure Web Synchronization. 291

292 Εμφανίζεται το επόμενο πλαίσιο διαλόγου 292

293 Συνεχίζουμε πατώντας Next και στην επόμενη σελίδα επιλέγουμε τον τύπο του Subscriber που θα συγχρονίζεται με την εικονική διεύθυνση, που θα δημιουργήσουμε και μέσω της οποίας θα μπορεί να ανταλλάσει δεδομένα με την βάση ID. 293

294 Επιλέγουμε SQL Server Mobile Edition και συνεχίζουμε στην επόμενη καρτέλα, στην οποία επιλέγουμε τον server στον οποίο θα δημιουργήσουμε την εικονική διεύθυνση, ή θα επιλέξουμε μία ήδη υπάρχουσα εικονική διεύθυνση ώστε να γίνεται ο συγχρονισμός. 294

295 Στην συγκεκριμένη περίπτωση θα δημιουργήσουμε μια νέα εικονική διεύθυνση στον server μας. Αν θέλαμε να αλλάξουμε server πατάμε το Browse και διαλέγουμε τον server που επιθυμούμε, ενώ αν θέλαμε να χρησιμοποιήσουμε μια ήδη υπάρχουσα διεύθυνση, θα έπρεπε να επιλέξουμε το Configure an existing virtual directory και στην συνέχεια να επιλέξουμε την διεύθυνση που θέλουμε από το Default Web Sites. Στο πλαίσια διαλόγου που εμφανίζεται αμέσως μετά, ορίζουμε το όνομα της εικονικής διεύθυνσης που θα δημιουργήσουμε. 295

296 Γράφουμε στο Alias το όνομα που θέλουμε (π.χ. ReplSync) και πατάμε Next. Επειδή η διεύθυνση που έχουμε γράψει δεν υπάρχει, μας εμφανίζει το εξής μήνυμα 296

297 Επιλέγουμε Yes ώστε να δημιουργηθεί η διεύθυνση, και στην συνέχεια εμφανίζεται το ακόλουθο μήνυμα Το SQL Mobile Server Agent είναι ένα.dll αρχείο (το sqlcesa30.dll), το οποίο προστίθεται στον φάκελο της εικονικής μας διεύθυνσης, και είναι απαραίτητο για να είναι εφικτή η ανταλλαγή δεδομένων μεταξύ των βάσεων. Στην συνέχεια θα πρέπει να επιλέξουμε τον τρόπο επικοινωνίας με την διεύθυνση, αν θα γίνεται δηλαδή με την χρήση SSL (Secure Socket Layer) ή όχι. 297

298 Αν έχουμε προσθέσει στον IIS κάποιο Certificate, τότε η δεύτερη επιλογή είναι ενεργοποιημένη και μπορούμε να την επιλέξουμε. Σε αντίθετη περίπτωση είναι απενεργοποιημένη και η μοναδική μας επιλογή είναι η πρώτη. Επιλέγουμε την πρώτη εκδοχή και συνεχίζουμε. Αμέσως μετά θα πρέπει να επιλέξουμε αν οι χρήστες θα μπορούν να συνδεθούν ανώνυμα, ή θα πρέπει να απαιτείται κάποιο username και password, ώστε να έχουν πρόσβαση. 298

299 Έχοντας επιλέξει το δεύτερο, στην συνέχεια θα πρέπει να επιλέξουμε με ποιο τρόπο θα γίνεται η αυθεντικοποίηση των χρηστών. Πατώντας το Next, εμφανίζεται η επόμενη εικόνα. 299

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

301 Με το πλήκτρο Advanced, εμφανίζεται μια λίστα, η οποία περιέχει όλες τις ομάδες χρηστών που υπάρχουν στον IIS. 301

302 Για τις ανάγκες της συγκεκριμένης εργασίας, έχει δημιουργηθεί μια νέα ομάδα χρηστών, με το όνομα ergasia. Την επιλέγουμε και πατάμε ΟΚ. Επιστρέφουμε ξανά στην προηγούμενη εικόνα, μόνο που τώρα στο κενό πλαίσιο που υπήρχε πριν, έχει προστεθεί το όνομα της ομάδας. 302

303 Αν θέλουμε να αλλάξουμε την ομάδα χρηστών, τότε πατάμε Advanced, και ακολουθούμε την ίδια διαδικασία με προηγουμένως. Αν όντως είναι αυτή η ομάδα που θέλουμε να προσθέσουμε, πατάμε ΟΚ και συνεχίζουμε. Πατώντας ΟΚ εμφανίζεται ξανά η εξής εικόνα : 303

304 Όπως βλέπουμε, έχει προστεθεί η ομάδα που επιλέξαμε. Αν τώρα θέλουμε να προσθέσουμε και άλλη ομάδα χρηστών, πατάμε ξανά το Add και ακολουθούμε ξανά την ίδια διαδικασία. Αφού προσθέσουμε όλες τις ομάδες που επιθυμούμε, πατάμε Next συνεχίζουμε. και Εμφανίζεται τώρα ένα πλαίσιο, το οποίο μας ζητάει να ορίσουμε το Snapshot Folder, στον οποίο θα έχει πρόσβαση ο SQL Mobile Server. Υπάρχει ήδη τοποθετημένη η διεύθυνση του Snapshot Folder που δημιουργήσαμε προηγουμένως. 304

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

306 Αν διαπιστώσουμε ότι όλα είναι όπως τα θέλουμε, πατάμε το κουμπί Finish, και ολοκληρώνεται η διαδικασία. 306

307 Αφού η βάση μας πλέον είναι διαθέσιμη μέσω Internet και προσπελάσιμη από χρήστες που ανήκουν στην ομάδα ergasia, τον Server μας, ώστε να επιτρέπει στους χρήστες της ομάδας που επιλέξαμε να μπορούν να διαβάσουν την βάση. Και αυτό γιατί πριν επιλέξαμε να υπάρχει SQL Security/. Αρχικά ανοίγουμε τον Security, στην συνέχεια τον υποφάκελο Login, και κάνοντας δεξί κλικ πάνω στον υποφάκελο, διαλέγουμε την επιλογή New Login. 307

308 Πατώντας το New Login εμφανίζεται το επόμενο μενού επιλογών 308

309 Πατώντας το κουμπί Search, μπορούμε να επιλέξουμε τις ομάδες χρηστών που επιθυμούμε. Η διαδικασία είναι ακριβώς ίδια με εκείνη που ακολουθήσαμε στο Configure Web Synchronization, όταν θέλαμε να επιλέξουμε τις ομάδες χρηστών που θα είχανε πρόσβαση στην βάση. Ακολουθούμε τα ίδια βήματα, και επιλέγουμε τις ίδιες ομάδες χρηστών με εκείνες που επιλέξαμε και προηγουμένως. 309

310 Αφού επιλέξουμε την ομάδα χρηστών ergasia, μπορούμε αν θέλουμε να αλλάξουμε την επιλογή Default database, και από master να βάλουμε την δική μας βάση (ID). Δεν παίζει κάποιο ιδιαίτερο ρόλο αν θα επιλέξουμε την βάση ή αν θα αφήσουμε την προεπιλογή της βάσης master. 310

311 Στην συνέχεια, από το μενού Select a page επιλέγουμε το User Mapping, το οποίο εμφανίζει τις ακόλουθες επιλογές: Από το πρώτο μενού επιλέγουμε την βάση μας, ενώ από το δεύτερο, το οποίο δείχνει με τι δικαιώματα θα συνδέεται στην βάση ID, επιλέγουμε το public. Στην συνέχεια πατάμε OK, και αποθηκεύονται οι επιλογές μας. 311

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

313 Εμφανίζεται το επόμενο παράθυρο, με επιλογές σχετικά με την βάση μας 313

314 Διαλέγοντας την επιλογή Publication Access List, μπορούμε να επεξεργαστούμε την λίστα με τις ομάδες χρηστών του IIS, οι οποίοι μπορούν να έχουν πρόσβαση στην βάση. Όπως φαίνεται και από την εικόνα, η δικιά μας ομάδα δεν υπάρχει. Πατάμε Add, ώστε να την προσθέσουμε, και εμφανίζεται η επόμενη εικόνα 314

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

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

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

318 Από την επιλογή Select the table to filter μπορούμε να επιλέξουμε τον πίνακα της βάσης που θα φιλτράρουμε, σε περίπτωση που η βάση μας περιέχει περισσότερους από έναν πίνακες. Από το Columns επιλέγουμε την στήλη την οποία θα χρησιμοποιήσουμε για το φιλτράρισμα. Όταν επιλέξουμε την στήλη πατάμε το βελάκι και το όνομα της στήλης εμφανίζεται δίπλα στο WHERE, στο πλαίσιο Filter Statement. Στο Filter Statement γράφουμε την εντολή, με βάση την οποία θα γίνει το φιλτράρισμα. Μπορούμε να γράψουμε ότι επιθυμούμε. Για παράδειγμα, στην συγκεκριμένη περίπτωση μπορούμε να γράψουμε την εντολή 318

319 SELECT <published_columns> FROM [dbo].[stoixeia] WHERE username= Stavros. Με αυτή την εντολή, όποτε καλείται η συγκεκριμένη βάση από το πρόγραμμα, θα αποστέλλονται μόνο τα στοιχεία που έχουν στην στήλη username την τιμή Stavros. Υπάρχουν δυο εντολές, με τις οποίες μπορούμε να προσαρμόσουμε ανάλογα τα αποτελέσματα που επιστρέφονται, με βάση τον χρήστη. Η μια εντολή είναι η HOST_NAME(), την τιμή της οποίας μπορούμε να καθορίσουμε μέσα από το πρόγραμμα. Οπότε αν κάθε φορά αλλάζουμε την τιμή της, θα μας επιστρέφονται και διαφορετικά αποτελέσματα. Η άλλη εντολή είναι η SUSER_SNAME(). Η συγκεκριμένη εντολή έχει ως τιμή το login του χρήστη στην βάση. Δηλαδή στην περίπτωση που περιγράφουμε τώρα έχει ως τιμή το ergasia. Αυτή η εντολή είναι χρήσιμη, αν έχουμε δώσει δικαιώματα σε πολλούς χρήστες. Έτσι όταν κάθε χρήστης συνδέεται, ελέγχεται το όνομα με το οποίο έχει πρόσβαση στον IIS, και επιστρέφονται τα ανάλογα αποτελέσματα. Στην περίπτωση της συγκεκριμένης εργασίας γίνεται χρήση της HOST_NAME(). 319

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

321 Αν τώρα έχουμε δυο ή περισσότερους πίνακες σε μια βάση, και εκ των οποίων στον ένα έχουμε ορίσει ένα Primary Key, ενώ στον δεύτερο πίνακα ένα Foreign Key, το οποίο είναι το Primary Key του πρώτου, τότε μπορούμε να ορίσουμε ένα φίλτρο στον πρώτο πίνακα, και πατώντας στην συνέχεια Add -> Add Join To Extend This Filter, να περάσουμε το ίδιο φίλτρο στον δεύτερο πίνακα, έτσι ώστε με βάση τα αποτελέσματα που επιστρέφονται από τον πρώτο, να επιστρέφονται και τα αντίστοιχα από τον δεύτερο. 321

Κινητό τηλέφωνο. Κινητό τηλέφωνο

Κινητό τηλέφωνο. Κινητό τηλέφωνο Κινητό τηλέφωνο ονομάζεται κατά κύριο λόγο το τηλέφωνο που δεν εξαρτάται από καλωδιακή σύνδεση με δίκτυο παροχής και δεν εξαρτάται από κάποια τοπική ασύρματη συσκευή. Κινητό τηλέφωνο Πως λειτουργεί η κινητή

Διαβάστε περισσότερα

Εναλλακτικές Τεχνικές Εντοπισμού Θέσης

Εναλλακτικές Τεχνικές Εντοπισμού Θέσης Εναλλακτικές Τεχνικές Εντοπισμού Θέσης Στρίγκος Θεόδωρος Σχολή Ηλεκτρολόγων Μηχανικών και Μηχανικών Υπολογιστών Εθνικό Μετσόβιο Πολυτεχνείο el01222@mail.ntua.gr Σκοπός της διπλωματικής εργασίας είναι η

Διαβάστε περισσότερα

Τεχνολογίες & Εφαρμογές Πληροφορικής Ενότητα 10: Κινητή Τηλεφωνία

Τεχνολογίες & Εφαρμογές Πληροφορικής Ενότητα 10: Κινητή Τηλεφωνία ΑΡΙΣΤΟΤΕΛΕΙΟ ΠΑΝΕΠΙΣΤΗΜΙΟ ΘΕΣΣΑΛΟΝΙΚΗΣ ΑΝΟΙΚΤΑ ΑΚΑΔΗΜΑΙΚΑ ΜΑΘΗΜΑΤΑ Τεχνολογίες & Εφαρμογές Πληροφορικής Ενότητα 10: Κινητή Τηλεφωνία Ανδρέας Βέγλης, Αναπληρωτής Καθηγητής Άδειες Χρήσης Το παρόν εκπαιδευτικό

Διαβάστε περισσότερα

Γεωπροσδιορισμός σε κινητές συσκευές και αξιοποίησή τους (Geolocation) ΓΤΠ61 Κοντάκης Σπυριδάκης

Γεωπροσδιορισμός σε κινητές συσκευές και αξιοποίησή τους (Geolocation) ΓΤΠ61 Κοντάκης Σπυριδάκης Γεωπροσδιορισμός σε κινητές συσκευές και αξιοποίησή τους (Geolocation) ΓΤΠ61 Κοντάκης Σπυριδάκης 2 Geolocation Γεωπροσδιορισμός ή γεωεντοπισμος (Geolocation) είναι ο γεωγραφικός προσδιορισμός ενός αντικειμένου

Διαβάστε περισσότερα

Κινητές επικοινωνίες. Κεφάλαιο 1 Κυψελωτά Συστήματα

Κινητές επικοινωνίες. Κεφάλαιο 1 Κυψελωτά Συστήματα Κινητές επικοινωνίες Κεφάλαιο 1 Κυψελωτά Συστήματα Ιστορικά στοιχεία 1940 1946 1975 1985 1 ο ασύρματο τηλέφωνο από την Bell System 1 η υπηρεσία παροχής κινητής τηλεφωνίας (Missouri, USA) 1 o κυψελωτό σύστημα

Διαβάστε περισσότερα

Δίκτυα Κινητών και Προσωπικών Επικοινωνιών

Δίκτυα Κινητών και Προσωπικών Επικοινωνιών Δίκτυα Κινητών και Προσωπικών Επικοινωνιών Εισαγωγή Άγγελος Ρούσκας Τμήμα Ψηφιακών Συστημάτων Πανεπιστήμιο Πειραιώς Σταθερές επικοινωνίες Το σημείο πρόσβασης υπηρεσίας είναι σταθερό +302107722532 +302107722530

Διαβάστε περισσότερα

MOBILE BANKING ΔΙΠΛΩΜΑΤΙΚΗ ΕΡΓΑΣΙΑ ΜΕΤΑΠΤΥΧΙΑΚΟΣ ΦΟΙΤΗΤΗΣ: ΜΠΙΖΑΝΙΔΗΣ ΓΕΩΡΓΙΟΣ, 35/05 ΕΠΙΒΛΕΠΩΝ ΚΑΘΗΓΗΤΗΣ: ΜΑΝΙΤΣΑΡΗΣ ΑΘΑΝΑΣΙΟΣ

MOBILE BANKING ΔΙΠΛΩΜΑΤΙΚΗ ΕΡΓΑΣΙΑ ΜΕΤΑΠΤΥΧΙΑΚΟΣ ΦΟΙΤΗΤΗΣ: ΜΠΙΖΑΝΙΔΗΣ ΓΕΩΡΓΙΟΣ, 35/05 ΕΠΙΒΛΕΠΩΝ ΚΑΘΗΓΗΤΗΣ: ΜΑΝΙΤΣΑΡΗΣ ΑΘΑΝΑΣΙΟΣ MOBILE BANKING ΔΙΠΛΩΜΑΤΙΚΗ ΕΡΓΑΣΙΑ ΜΕΤΑΠΤΥΧΙΑΚΟΣ ΦΟΙΤΗΤΗΣ: ΜΠΙΖΑΝΙΔΗΣ ΓΕΩΡΓΙΟΣ, 35/05 ΕΠΙΒΛΕΠΩΝ ΚΑΘΗΓΗΤΗΣ: ΜΑΝΙΤΣΑΡΗΣ ΑΘΑΝΑΣΙΟΣ ΟΡΙΣΜΟΣ TOY M-BANKING ΗΛΕΚΤΡΟΝΙΚΗ ΤΡΑΠΕΖΙΚΗ ΑΤΜ PHONE BANKING INTERNET BANKING

Διαβάστε περισσότερα

Σύστημα Διαχείρισης, Ελέγχου και Παρακολούθησης Ασθενοφόρων και Περιστατικών

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

Διαβάστε περισσότερα

Συνδεσιμότητα κινητού τηλεφώνου

Συνδεσιμότητα κινητού τηλεφώνου Συνδεσιμότητα κινητού τηλεφώνου Συνδεσιμότητα κινητού Wifi O όρος WIFI (Wireless Fidelity) χρησιμοποιείται για να προσδιορίσει τις συσκευές που βασίζονται στην προδιαγραφή και εκπέμπουν σε συχνότητες 2.4GHz.

Διαβάστε περισσότερα

ΕΠΛ 476: ΚΙΝΗΤΑ ΔΙΚΤΥΑ ΥΠΟΛΟΓΙΣΤΩΝ (MOBILE NETWORKS)

ΕΠΛ 476: ΚΙΝΗΤΑ ΔΙΚΤΥΑ ΥΠΟΛΟΓΙΣΤΩΝ (MOBILE NETWORKS) ΟΜΑΔΑ ΦΟΙΤΗΤΩΝ: Μιχαηλίνα Αργυρού Κασιανή Πάρη ΕΠΛ 476: ΚΙΝΗΤΑ ΔΙΚΤΥΑ ΥΠΟΛΟΓΙΣΤΩΝ (MOBILE NETWORKS) Δρ. Χριστόφορος Χριστοφόρου Πανεπιστήμιο Κύπρου - Τμήμα Πληροφορικής WiMAX (Worldwide Interoperability

Διαβάστε περισσότερα

ΤΕΧΝΗΤΟΙ ΔΟΡΥΦΟΡΟΙ. Ροζ δορυφόροι

ΤΕΧΝΗΤΟΙ ΔΟΡΥΦΟΡΟΙ. Ροζ δορυφόροι ΤΕΧΝΗΤΟΙ ΔΟΡΥΦΟΡΟΙ Ροζ δορυφόροι Ερωτήσεις 1) Ειρηνικές χρήσεις δορυφόρων 2)Στρατιωτικές χρήσεις δορυφόρων; 3)Πλεονεκτήματα - μειονεκτήματα 4)Πως θα είναι στο μέλλον; Ειρηνικές χρήσεις δορυφόρων Έχουν

Διαβάστε περισσότερα

Οι βασικές βαθμίδες του συστήματος των δορυφορικών επικοινωνιών δίνονται στο παρακάτω σχήμα :

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

Διαβάστε περισσότερα

Δίκτυα Τηλεπικοινωνιών. και Μετάδοσης

Δίκτυα Τηλεπικοινωνιών. και Μετάδοσης Τεχνολογικό Εκπαιδευτικό Ίδρυμα Σερρών Τμήμα Πληροφορικής & Επικοινωνιών Δίκτυα Τηλεπικοινωνιών και Μετάδοσης Δρ. Δημήτριος Ευσταθίου Επίκουρος Καθηγητής & Δρ. Στυλιανός Τσίτσος Επίκουρος Καθηγητής Δίκτυα

Διαβάστε περισσότερα

ΔΙΚΤΥΑ ΥΠΟΛΟΓΙΣΤΩΝ Ι. Σημειώσεις Θεωρίας

ΔΙΚΤΥΑ ΥΠΟΛΟΓΙΣΤΩΝ Ι. Σημειώσεις Θεωρίας Ινστιτούτα Επαγγελματική Κατάρτισης ΔΙΚΤΥΑ ΥΠΟΛΟΓΙΣΤΩΝ Ι Σημειώσεις Θεωρίας Επιμέλεια: Ματθές Δημήτριος Αθήνα 2017 Μάθημα 1: Βασικές Έννοιες στα Δίκτυα Υπολογιστών 1.1 Δίκτυο Υπολογιστών Ένα δίκτυο είναι

Διαβάστε περισσότερα

Περίληψη ιπλωµατικής Εργασίας

Περίληψη ιπλωµατικής Εργασίας Περίληψη ιπλωµατικής Εργασίας Θέµα: Πρότυπη Εφαρµογή ιαλειτουργικότητας για Φορητές Συσκευές Όνοµα: Κωνσταντίνος Χρηστίδης Επιβλέπων: Ιωάννης Βασιλείου Συν-επιβλέπων: Σπύρος Αθανασίου 1. Αντικείµενο Αντικείµενο

Διαβάστε περισσότερα

ΓΡΑΠΤΕΣ ΠΡΟΑΓΩΠΚΕΣ ΕΞΕΤΑΣΕΙΣ ΜΑΪΟΥ / ΙΟΥΝΙΟΥ 2014

ΓΡΑΠΤΕΣ ΠΡΟΑΓΩΠΚΕΣ ΕΞΕΤΑΣΕΙΣ ΜΑΪΟΥ / ΙΟΥΝΙΟΥ 2014 ΤΕΧΝΙΚΗ ΣΧΟΛΗ ΜΑΚΑΡΙΟΣ Γ ΣΧΟΛΙΚΗ ΧΡΟΝΙΑ: 2013 2014 ΓΡΑΠΤΕΣ ΠΡΟΑΓΩΠΚΕΣ ΕΞΕΤΑΣΕΙΣ ΜΑΪΟΥ / ΙΟΥΝΙΟΥ 2014 Κατεύθυνση: ΠΡΑΚΤΙΚΗ Κλάδος: ΗΛΕΚΤΡΟΛΟΓΙΑ Μάθημα: ΤΕΧΝΟΛΟΓΙΑ ΚΑΙ ΕΡΓΑΣΤΗΡΙΑ ΕΠΙΚΟΙΝΩΝΙΩΝ Τάξη: A Τμήμα:

Διαβάστε περισσότερα

Συσκευές Τηλεπικοινωνιών και Δικτύωσης. Επικοινωνίες Δεδομένων Μάθημα 9 ο

Συσκευές Τηλεπικοινωνιών και Δικτύωσης. Επικοινωνίες Δεδομένων Μάθημα 9 ο Συσκευές Τηλεπικοινωνιών και Δικτύωσης Επικοινωνίες Δεδομένων Μάθημα 9 ο Εισαγωγή Ένα δίκτυο αποτελείται από ενεργά και παθητικά στοιχεία. Στα παθητικά στοιχεία εντάσσονται τα καλώδια και τα εξαρτήματα

Διαβάστε περισσότερα

Διαχείριση Ειδοποιήσεων με Κινητές Συσκευές

Διαχείριση Ειδοποιήσεων με Κινητές Συσκευές Διαχείριση Ειδοποιήσεων με Κινητές Συσκευές Λαμπαδαρίδης Αντώνιος el04148@mail.ntua.gr Διπλωματική εργασία στο Εργαστήριο Συστημάτων Βάσεων Γνώσεων και Δεδομένων Επιβλέπων: Καθηγητής Τ. Σελλής Περίληψη

Διαβάστε περισσότερα

Σύστημα Αυτόματης Ταυτοποίησης. AIS Automatic Identification System

Σύστημα Αυτόματης Ταυτοποίησης. AIS Automatic Identification System Σύστημα Αυτόματης Ταυτοποίησης AIS Automatic Identification System Ορισμός Απαίτηση από τον ΙΜΟ (international Maritime Organization) από το 2004 (για πλοία με χωρητικότητας μεγαλύτερη από 300 gt) Παρέχει

Διαβάστε περισσότερα

Προσαρμογή λειτουργιών Δικτύου Κινητής Τηλεφωνίας

Προσαρμογή λειτουργιών Δικτύου Κινητής Τηλεφωνίας Αυτόματο Σύστημα Κλήσης Έκτακτης Ανάγκης Προσαρμογή λειτουργιών Δικτύου Κινητής Τηλεφωνίας Κωνσταντίνος Φίλης, COSMOTE ΕΥΡΩΠΑΪΚΗ ΕΝΩΣΗ ΕΥΡΩΠΑΪΚΟ ΤΑΜΕΙΟ ΠΕΡΙΦΕΡΕΙΑΚΗΣ ΑΝΑΠΤΥΞΗΣ Υφιστάμενη Διαχείριση Κλήσεων

Διαβάστε περισσότερα

ΚΕΦΑΛΑΙΟ 1: Τα είδη των Δικτύων Εισαγωγή

ΚΕΦΑΛΑΙΟ 1: Τα είδη των Δικτύων Εισαγωγή ΚΕΦΑΛΑΙΟ 1: Τα είδη των Δικτύων 1.1. Εισαγωγή Γενικότερα δεν υπάρχει κάποια ταξινόμηση των πιθανών δικτύων κάτω από την οποία να ταιριάζουν όλα τα δίκτυα. Παρόλα αυτά η ταξινόμηση τους είθισται να γίνεται

Διαβάστε περισσότερα

Κεφάλαιο 1 Ε Π Α Ν Α Λ Η Ψ Η. Αρχές Δικτύων Επικοινωνιών

Κεφάλαιο 1 Ε Π Α Ν Α Λ Η Ψ Η. Αρχές Δικτύων Επικοινωνιών Κεφάλαιο 1 Ε Π Α Ν Α Λ Η Ψ Η Αρχές Δικτύων Επικοινωνιών Τι είναι επικοινωνία; Είναι η διαδικασία αποστολής πληροφοριών από ένα πομπό σε κάποιο δέκτη. Η Τηλεπικοινωνία είναι η επικοινωνία από απόσταση (τηλε-).

Διαβάστε περισσότερα

9ο Συνέδριο Χαρτογραφίας, Χανιά, 2-42

9ο Συνέδριο Χαρτογραφίας, Χανιά, 2-42 ΧΑΡΤΟΓΡΑΦΙΚΗ ΕΘΝΙΚΗ ΕΤΑΙΡΕΙΑ ΕΛΛΑ ΑΣ Χαρτογραφία των ικτύων Χαρτογραφία μέσω ικτύων 9ο Συνέδριο Χαρτογραφίας, Χανιά, 2-42 4 Νοεμβρίου, 2006 ιαφαινόμενες προοπτικές από τη δικτυακή υποδομή του HEPOS για

Διαβάστε περισσότερα

Τεχνολογία Υπηρεσιών Εξαρτώµενων από τη Θέση (LBS) PoLoS: Ολοκληρωµένη Πλατφόρµα LBS

Τεχνολογία Υπηρεσιών Εξαρτώµενων από τη Θέση (LBS) PoLoS: Ολοκληρωµένη Πλατφόρµα LBS Τεχνολογία Υπηρεσιών Εξαρτώµενων από τη Θέση (LBS) PoLoS: Ολοκληρωµένη Πλατφόρµα LBS Πανεπιστήµιο Αθηνών Τµήµα Πληροφορικής και Τηλεπικοινωνιών Εργαστήριο ικτύων Επικοινωνιών Ε. Χατζηευθυµιάδης (shadj@di.uoa.gr)

Διαβάστε περισσότερα

Πληροφορική Μάθημα 9

Πληροφορική Μάθημα 9 Πληροφορική Μάθημα 9 ΔΙΚΤΥΑ ΥΠΟΛΟΓΙΣΤΩΝ ΕΙΣΑΓΩΓΗ ΔΙΚΤΥΑ ΕΥΡΕΙΑΣ ΠΕΡΙΟΧΗΣ WAN Τα δίκτυα αυτά χρησιμοποιούνται για την διασύνδεση υπολογιστών, οι οποίοι βρίσκονται σε διαφορετικές πόλεις ή ακόμη και σε διαφορετικές

Διαβάστε περισσότερα

ΚΟΙΝΩΝΙΚΗ ΔΙΚΤΥΩΣΗ ΜΕΣΩ ΚΙΝΗΤΩΝ ΣΥΣΚΕΥΩΝ: ΧΡΗΣΗ ΔΕΚΤΗ GPS ΓΙΑ ΑΝΑΠΤΥΞΗ ΕΦΑΡΜΟΓΗΣ ΚΟΙΝΩΝΙΚΗΣ ΔΙΚΤΥΩΣΗΣ ΣΕ ΚΙΝΗΤΗ ΣΥΣΚΕΥΗ

ΚΟΙΝΩΝΙΚΗ ΔΙΚΤΥΩΣΗ ΜΕΣΩ ΚΙΝΗΤΩΝ ΣΥΣΚΕΥΩΝ: ΧΡΗΣΗ ΔΕΚΤΗ GPS ΓΙΑ ΑΝΑΠΤΥΞΗ ΕΦΑΡΜΟΓΗΣ ΚΟΙΝΩΝΙΚΗΣ ΔΙΚΤΥΩΣΗΣ ΣΕ ΚΙΝΗΤΗ ΣΥΣΚΕΥΗ ΚΟΙΝΩΝΙΚΗ ΔΙΚΤΥΩΣΗ ΜΕΣΩ ΚΙΝΗΤΩΝ ΣΥΣΚΕΥΩΝ: ΧΡΗΣΗ ΔΕΚΤΗ GPS ΓΙΑ ΑΝΑΠΤΥΞΗ ΕΦΑΡΜΟΓΗΣ ΚΟΙΝΩΝΙΚΗΣ ΔΙΚΤΥΩΣΗΣ ΣΕ ΚΙΝΗΤΗ ΣΥΣΚΕΥΗ Χαρίτων Ευσταθιάδης Σοφία Γεωργιάδου Πανεπιστήμιο Κύπρου Τμήμα Πληροφορικής ΕΠΛ 425

Διαβάστε περισσότερα

ΤΕΙ ΗΠΕΙΡΟΥ ΣΧΟΛΗ ΔΙΟΙΚΗΣΗΣ ΚΑΙ ΟΙΚΟΝΟΜΙΑΣ ΤΜΗΜΑ ΤΗΛΕΠΛΗΡΟΦΟΡΙΚΗΣ ΚΑΙ ΔΙΟΙΚΗΣΗΣ

ΤΕΙ ΗΠΕΙΡΟΥ ΣΧΟΛΗ ΔΙΟΙΚΗΣΗΣ ΚΑΙ ΟΙΚΟΝΟΜΙΑΣ ΤΜΗΜΑ ΤΗΛΕΠΛΗΡΟΦΟΡΙΚΗΣ ΚΑΙ ΔΙΟΙΚΗΣΗΣ ΤΕΙ ΗΠΕΙΡΟΥ ΣΧΟΛΗ ΔΙΟΙΚΗΣΗΣ ΚΑΙ ΟΙΚΟΝΟΜΙΑΣ ΤΜΗΜΑ ΤΗΛΕΠΛΗΡΟΦΟΡΙΚΗΣ ΚΑΙ ΔΙΟΙΚΗΣΗΣ ΠΤΥΧΙΑΚΗ ΕΡΓΑΣΙΑ: ΑΣΥΡΜΑΤΑ ΤΟΠΙΚΑ ΔΙΚΤΥΑ ΥΠΕΥΘΥΝΟΣ ΚΑΘΗΓΗΤΗΣ: ΤΣΙΑΝΤΗΣ ΛΕΩΝΙΔΑΣ ΥΠΕΥΘΥΝΟΣ ΕΡΓΑΣΙΑΣ: ΚΥΡΑΓΙΑΝΝΗΣ ΓΙΩΡΓΟΣ ΠΕΡΙΕΧΟΜΕΝΑ

Διαβάστε περισσότερα

Αρχές Δικτύων Επικοινωνιών. Επικοινωνίες Δεδομένων Μάθημα 4 ο

Αρχές Δικτύων Επικοινωνιών. Επικοινωνίες Δεδομένων Μάθημα 4 ο Αρχές Δικτύων Επικοινωνιών Επικοινωνίες Δεδομένων Μάθημα 4 ο Τα επικοινωνιακά δίκτυα και οι ανάγκες που εξυπηρετούν Για την επικοινωνία δύο συσκευών απαιτείται να υπάρχει μεταξύ τους σύνδεση από σημείο

Διαβάστε περισσότερα

ΘΕΜΑΤΑ ΔΙΠΛΩΜΑΤΙΚΩΝ ΕΡΓΑΣΙΩΝ Εργ. Συστημάτων Βάσεων Γνώσεων & Δεδομένων LOCATION BASED SERVICES ΕΙΣΑΓΩΓΙΚΟ ΣΗΜΕΙΜΩΜΑ

ΘΕΜΑΤΑ ΔΙΠΛΩΜΑΤΙΚΩΝ ΕΡΓΑΣΙΩΝ Εργ. Συστημάτων Βάσεων Γνώσεων & Δεδομένων LOCATION BASED SERVICES ΕΙΣΑΓΩΓΙΚΟ ΣΗΜΕΙΜΩΜΑ LOCATION BASED SERVICES ΕΙΣΑΓΩΓΙΚΟ ΣΗΜΕΙΜΩΜΑ ΠΛΗΡΟΦΟΡΙΕΣ: Σπύρος Αθανασίου, 210 772 1436, spathan@dblab.ece.ntua.gr Ντίνος Αρκουμάνης, +30972300110, dinosar@dblab.ece.ntua.gr Με τον όρο Location Based

Διαβάστε περισσότερα

Το κινητό τηλέφωνο. Θάνος Ψαρράς. Μαθητής Β4 Γυμνασίου, Ελληνικό Κολλέγιο Θεσσαλονίκης. Επιβλέπων Καθηγητής: Κωνσταντίνος Παρασκευόπουλος

Το κινητό τηλέφωνο. Θάνος Ψαρράς. Μαθητής Β4 Γυμνασίου, Ελληνικό Κολλέγιο Θεσσαλονίκης. Επιβλέπων Καθηγητής: Κωνσταντίνος Παρασκευόπουλος Το κινητό τηλέφωνο Θάνος Ψαρράς Μαθητής Β4 Γυμνασίου, Ελληνικό Κολλέγιο Θεσσαλονίκης Επιβλέπων Καθηγητής: Κωνσταντίνος Παρασκευόπουλος Καθηγητής Πληροφορικής Ελληνικού Κολλεγίου Θεσσαλονίκης Η παρακάτω

Διαβάστε περισσότερα

Βασικές έννοιες και ιστορική αναδρομή

Βασικές έννοιες και ιστορική αναδρομή Βασικές έννοιες και ιστορική αναδρομή MYE006: ΑΣΥΡΜΑΤΑ ΔΙΚΤΥΑ Ευάγγελος Παπαπέτρου ΠΑΝΕΠΙΣΤΗΜΙΟ ΙΩΑΝΝΙΝΩΝ ΤΜΗΜΑ MHX. H/Y & ΠΛΗΡΟΦΟΡΙΚΗΣ Διάρθρωση μαθήματος Εισαγωγή Ορισμός ασύρματου δικτύου Παραδείγματα

Διαβάστε περισσότερα

Πανεπιστήμιο Αιγαίου Σχολή Κοινωνικών Επιστημών Τμήμα Πολιτισμικής Τεχνολογίας Και Επικοινωνίας

Πανεπιστήμιο Αιγαίου Σχολή Κοινωνικών Επιστημών Τμήμα Πολιτισμικής Τεχνολογίας Και Επικοινωνίας Πανεπιστήμιο Αιγαίου Σχολή Κοινωνικών Επιστημών Τμήμα Πολιτισμικής Τεχνολογίας Και Επικοινωνίας Ψηφιακό Περιεχόμενο & Ηλεκτρονικό Εμπόριο (Δ εξάμηνο) Διάλεξη # 10η: Κινητό Εμπόριο (m Commerce) Χαρίκλεια

Διαβάστε περισσότερα

Τηλεματική, Διαδίκτυα και Κοινωνία Το Ευρωπαϊκό Πρότυπο GSM

Τηλεματική, Διαδίκτυα και Κοινωνία Το Ευρωπαϊκό Πρότυπο GSM Τηλεματική, Διαδίκτυα και Κοινωνία Το Ευρωπαϊκό Πρότυπο GSM 1 Το Ευρωπαϊκό Πρότυπο GSM Το GSM είναι ένα ψηφιακό κυψελωτό σύστημα κινητών επικοινωνιών και αναπτύχθηκε ώστε να δημιουργηθεί ένα Ευρωπαϊκό

Διαβάστε περισσότερα

ΕΙΣΑΓΩΓΗ ΣΤΗΝ ΠΛΗΡΟΦΟΡΙΚΗ

ΕΙΣΑΓΩΓΗ ΣΤΗΝ ΠΛΗΡΟΦΟΡΙΚΗ ΤΕΙ ΙΟΝΙΩΝ ΝΗΣΩΝ ΤΜΗΜΑ ΕΦΑΡΜΟΓΩΝ ΠΛΗΡΟΦΟΡΙΚΗΣ ΣΤΗ ΔΙΟΙΚΗΣΗ ΚΑΙ ΣΤΗΝ ΟΙΚΟΝΟΜΙΑ 10 Ο ΜΑΘΗΜΑ ΕΙΣΑΓΩΓΗ ΣΤΗΝ ΠΛΗΡΟΦΟΡΙΚΗ ΑΠΟΣΤΟΛΙΑ ΠΑΓΓΕ Περιεχόμενα 2 Συνδέσεις και Επικοινωνίες Δίκτυα υπολογιστών Κατηγορίες

Διαβάστε περισσότερα

Βασικές έννοιες και ιστορική αναδρομή

Βασικές έννοιες και ιστορική αναδρομή ΠΑΝΕΠΙΣΤΗΜΙΟ ΙΩΑΝΝΙΝΩΝ ΤΜΗΜΑ MHX. H/Y & ΠΛΗΡΟΦΟΡΙΚΗΣ Βασικές έννοιες και ιστορική αναδρομή MYE006: ΑΣΥΡΜΑΤΑ ΔΙΚΤΥΑ Ευάγγελος Παπαπέτρου Διάρθρωση μαθήματος Εισαγωγή Ορισμός ασύρματου δικτύου Παραδείγματα

Διαβάστε περισσότερα

ΣΥΣΤΗΜΑΤΑ ΚΙΝΗΤΩΝ ΚΑΙ ΠΡΟΣΩΠΙΚΩΝ ΕΠΙΚΟΙΝΩΝΙΩΝ. Εισαγωγή

ΣΥΣΤΗΜΑΤΑ ΚΙΝΗΤΩΝ ΚΑΙ ΠΡΟΣΩΠΙΚΩΝ ΕΠΙΚΟΙΝΩΝΙΩΝ. Εισαγωγή ΣΥΣΤΗΜΑΤΑ ΚΙΝΗΤΩΝ ΚΑΙ ΠΡΟΣΩΠΙΚΩΝ ΕΠΙΚΟΙΝΩΝΙΩΝ Εισαγωγή Σκοπός του μαθήματος Μελέτη της αρχιτεκτονικής και της λειτουργίας των δικτύων κινητών και προσωπικών επικοινωνιών. Το αντικείμενο είναι τεράστιο

Διαβάστε περισσότερα

ΠΙΛΟΤΙΚΗ ΕΦΑΡΜΟΓΗ ΑΥΤΟΝΟΜΩΝ ΣΥΣΤΗΜΑΤΩΝ ΠΛΟΗΓΗΣΗΣ ΓΙΑ ΤΗΝ ΠΑΡΑΓΩΓΗ ΥΨΗΛΗΣ ΑΝΑΛΥΣΗΣ ΟΡΘΟΦΩΤΟΓΡΑΦΙΩΝ ΓΕΩΡΓΙΚΩΝ ΕΚΤΑΣΕΩΝ

ΠΙΛΟΤΙΚΗ ΕΦΑΡΜΟΓΗ ΑΥΤΟΝΟΜΩΝ ΣΥΣΤΗΜΑΤΩΝ ΠΛΟΗΓΗΣΗΣ ΓΙΑ ΤΗΝ ΠΑΡΑΓΩΓΗ ΥΨΗΛΗΣ ΑΝΑΛΥΣΗΣ ΟΡΘΟΦΩΤΟΓΡΑΦΙΩΝ ΓΕΩΡΓΙΚΩΝ ΕΚΤΑΣΕΩΝ Σχολή Μηχανικής & Τεχνολογίας Τμήμα Πολιτικών & Μηχανικών Γεωπληροφορικής Μεταπτυχιακή διατριβή ΠΙΛΟΤΙΚΗ ΕΦΑΡΜΟΓΗ ΑΥΤΟΝΟΜΩΝ ΣΥΣΤΗΜΑΤΩΝ ΠΛΟΗΓΗΣΗΣ ΓΙΑ ΤΗΝ ΠΑΡΑΓΩΓΗ ΥΨΗΛΗΣ ΑΝΑΛΥΣΗΣ ΟΡΘΟΦΩΤΟΓΡΑΦΙΩΝ ΓΕΩΡΓΙΚΩΝ

Διαβάστε περισσότερα

Βασικές έννοιες και ιστορική αναδρομή

Βασικές έννοιες και ιστορική αναδρομή ΠΑΝΕΠΙΣΤΗΜΙΟ ΙΩΑΝΝΙΝΩΝ ΤΜΗΜΑ MHX. H/Y & ΠΛΗΡΟΦΟΡΙΚΗΣ Βασικές έννοιες και ιστορική αναδρομή ΑΣΥΡΜΑΤΑ ΔΙΚΤΥΑ Ευάγγελος Παπαπέτρου Διάρθρωση μαθήματος Εισαγωγή Ορισμός ασύρματου δικτύου Παραδείγματα ασύρματων

Διαβάστε περισσότερα

Ασύρµατη λειτουργία Οδηγός χρήσης

Ασύρµατη λειτουργία Οδηγός χρήσης Ασύρµατη λειτουργία Οδηγός χρήσης Copyright 2007 Hewlett-Packard Development Company, L.P. Η ονοµασία Windows είναι κατοχυρωµένο εµπορικό σήµα της Microsoft Corporation στις Η.Π.Α. Η ονοµασία Bluetooth

Διαβάστε περισσότερα

ZigBee. Φοιτητής: Μόσχογλου Στυλιανός Επιβλέπων καθηγητής: κ. Δοκουζγιάννης Σταύρος

ZigBee. Φοιτητής: Μόσχογλου Στυλιανός Επιβλέπων καθηγητής: κ. Δοκουζγιάννης Σταύρος ZigBee Φοιτητής: Μόσχογλου Στυλιανός Επιβλέπων καθηγητής: κ. Δοκουζγιάννης Σταύρος Τι είναι το ZigBee; Ένα τυποποιημένο πρωτόκολλο χαμηλής Κατανάλωσης Ισχύος σε Wireless Persnal Area Netwrks (WPANs) Ένα

Διαβάστε περισσότερα

Χαρακτηριστικά. Βάρος. Ευαισθησία GPS Ακρίβεια GPS. Θερμοκρασία Αποθήκευσης Θερμοκρασία Λειτουργίας

Χαρακτηριστικά. Βάρος. Ευαισθησία GPS Ακρίβεια GPS. Θερμοκρασία Αποθήκευσης Θερμοκρασία Λειτουργίας 2 Ευχαριστούμε για την αγορά του εντοπιστή (tracker) ποδηλάτου. Αυτές οι οδηγίες περιγράφουν πως θα τον ρυθμίσετε ώστε να λειτουργεί σωστά και κατά τον επιθυμητό τρόπο. Παρακαλούμε διαβάστε προσεκτικά.

Διαβάστε περισσότερα

Κάντε κλικ για έναρξη

Κάντε κλικ για έναρξη Σημειώσεις : Χρήστος Μουρατίδης Κάντε κλικ για έναρξη Ορισμός Δίκτυο Υπολογιστών = Mία ομάδα από 2 ή περισσότερους υπολογιστές που είναι συνδεδεμένοι μεταξύ τους. Ο κύριος σκοπός είναι να ανταλλάσσουν

Διαβάστε περισσότερα

Πτυχιακή Εργασία. Ασύρματα Δίκτυα της Τεχνολογίας Hot Spot

Πτυχιακή Εργασία. Ασύρματα Δίκτυα της Τεχνολογίας Hot Spot Πτυχιακή Εργασία Ασύρματα Δίκτυα της Τεχνολογίας Hot Spot Σκοπός της σημερινής παρουσίασης είναι να παρουσιαστεί και να αναλυθεί η δομή και ο τρόπος λειτουργίας ενός δικτύου Hot Spot. Υπεύθυνος Παρουσίασης

Διαβάστε περισσότερα

Στόχοι. Υπολογιστικά συστήματα: Στρώματα. Βασικές έννοιες [7]

Στόχοι. Υπολογιστικά συστήματα: Στρώματα. Βασικές έννοιες [7] Στόχοι ΕΠΛ 003: ΕΙΣΑΓΩΓΗ ΣΤΗΝ ΕΠΙΣΤΗΜΗ ΤΗΣ ΠΛΗΡΟΦΟΡΙΚΗΣ 1 Να εξηγήσουμε τι είναι τα δίκτυα υπολογιστών, ποιες είναι οι βασικές κατηγορίες τους και ποιες οι πιο συνηθισμένες τοπολογίες τους. Να περιγράψουμε

Διαβάστε περισσότερα

ΕΠΙΚΟΙΝΩΝΙΕΣ ΔΕΔΟΜΕΝΩΝ ΚΑΙ ΤΕΧΝΟΛΟΓΙΕΣ INTERNET

ΕΠΙΚΟΙΝΩΝΙΕΣ ΔΕΔΟΜΕΝΩΝ ΚΑΙ ΤΕΧΝΟΛΟΓΙΕΣ INTERNET ΕΠΙΚΟΙΝΩΝΙΕΣ ΔΕΔΟΜΕΝΩΝ ΚΑΙ ΤΕΧΝΟΛΟΓΙΕΣ INTERNET Κεφάλαιο 4: Τεχνικές Μετάδοσης ΜΕΤΑΓΩΓΗ Τεχνική µεταγωγής ονομάζεται ο τρόπος µε τον οποίο αποκαθίσταται η επικοινωνία ανάµεσα σε δύο κόµβους με σκοπό την

Διαβάστε περισσότερα

ΕΠΛ 001: ΕΙΣΑΓΩΓΗ ΣΤΗΝ ΕΠΙΣΤΗΜΗ ΤΗΣ ΠΛΗΡΟΦΟΡΙΚΗΣ. Δίκτυα Υπολογιστών

ΕΠΛ 001: ΕΙΣΑΓΩΓΗ ΣΤΗΝ ΕΠΙΣΤΗΜΗ ΤΗΣ ΠΛΗΡΟΦΟΡΙΚΗΣ. Δίκτυα Υπολογιστών ΕΠΛ 001: ΕΙΣΑΓΩΓΗ ΣΤΗΝ ΕΠΙΣΤΗΜΗ ΤΗΣ ΠΛΗΡΟΦΟΡΙΚΗΣ Δίκτυα Υπολογιστών Στόχοι 1 Να εξηγήσουμε τι είναι τα δίκτυα υπολογιστών, ποιες είναι οι βασικές κατηγορίες τους και ποιες οι πιο συνηθισμένες τοπολογίες

Διαβάστε περισσότερα

Ασύρµατη λειτουργία (µόνο σε επιλεγµένα µοντέλα)

Ασύρµατη λειτουργία (µόνο σε επιλεγµένα µοντέλα) Ασύρµατη λειτουργία (µόνο σε επιλεγµένα µοντέλα) Οδηγός χρήσης Copyright 2007 Hewlett-Packard Development Company, L.P. Η επωνυµία Windows είναι εµπορικό σήµα κατατεθέν της εταιρείας Microsoft Corporation.

Διαβάστε περισσότερα

FIRE PROTECTION NETWORK

FIRE PROTECTION NETWORK Assignment 2 FIRE PROTECTION NETWORK Μάριος Σούνδιας ΑΜ:2633 Ηλίας Ζαραφίδης ΑΜ:2496 Κωνσταντίνος Σολωμός ΑΜ: 2768 Θεμιστοκλής Θεολογίτης ΑΜ: 2775 soundias@csd.uoc.gr zarafid@csd.uoc.gr solomos@csd.uoc.gr

Διαβάστε περισσότερα

ίκτυα Κινητών και Προσωπικών Επικοινωνιών Υπηρεσίες θέσης

ίκτυα Κινητών και Προσωπικών Επικοινωνιών Υπηρεσίες θέσης ίκτυα Κινητών και Προσωπικών Επικοινωνιών Υπηρεσίες θέσης Περίληψη Εισαγωγή Υπηρεσίες έκτακτης ανάγκης Κατηγορίες υπηρεσιών θέσης Μοντελοποίηση υπηρεσιών θέσης Αρχιτεκτονική LBS Μέθοδοι προσδιορισμού θέσης

Διαβάστε περισσότερα

Ικανότητες UE - ικτύου

Ικανότητες UE - ικτύου Ικανότητες UE - ικτύου Θα υπάρξουν αρκετά είδη τερµατικών και δικτύων UMTS στις επόµενες δεκαετίες. Ένα τυχαίο UE και ένα τυχαίο δίκτυο θα πρέπει να µπορούν να διαπραγµατεύονται ποιες βασικές δυνατότητες

Διαβάστε περισσότερα

Κεφάλαιο 12. Επικοινωνίες-Δίκτυα-Διαδίκτυο. Εξαιρούνται οι παράγραφοι:

Κεφάλαιο 12. Επικοινωνίες-Δίκτυα-Διαδίκτυο. Εξαιρούνται οι παράγραφοι: Κεφάλαιο 12 Επικοινωνίες-Δίκτυα-Διαδίκτυο Εξαιρούνται οι παράγραφοι: 12.1 12.3.2 12.3.7 12.4 1 12.2 Ηλεκτρονική επικοινωνία Τι ονομάζουμε τηλεπικοινωνία; Την επικοινωνία από απόσταση Τι ονομάζουμε ηλεκτρονική

Διαβάστε περισσότερα

Δίκτυα Υπολογιστών I

Δίκτυα Υπολογιστών I Δίκτυα Υπολογιστών I Βασικές Αρχές Δικτύωσης Ευάγγελος Παπαπέτρου Τμ. Μηχ. Η/Υ & Πληροφορικής, Παν. Ιωαννίνων Ε.Παπαπέτρου (Τμ.Μηχ. Η/Υ & Πληροφορικής) MYY703: Δίκτυα Υπολογιστών I 1 / 22 Διάρθρωση 1 Βασικές

Διαβάστε περισσότερα

Πανεπιστήμιο Κρήτης Τμήμα Επιστήμης Υπολογιστών. ΗΥ335a Δίκτυα Υπολογιστών Διδάσκουσα: Παπαδοπούλη Μαρία BlindSense

Πανεπιστήμιο Κρήτης Τμήμα Επιστήμης Υπολογιστών. ΗΥ335a Δίκτυα Υπολογιστών Διδάσκουσα: Παπαδοπούλη Μαρία BlindSense Πανεπιστήμιο Κρήτης Τμήμα Επιστήμης Υπολογιστών ΗΥ335a Δίκτυα Υπολογιστών Διδάσκουσα: Παπαδοπούλη Μαρία 2015-2016 BlindSense Ομάδα: Αθανασάκη Ευαγγελία 3076 (csd3076@csd.uoc.gr) Αναγνώστου Λεωνίδας 2828

Διαβάστε περισσότερα

ΤΕΧΝΟΛΟΓΙΚΟ ΠΑΝΕΠΙΣΤΗΜΙΟ ΚΥΠΡΟΥ ΣΧΟΛΗ ΓΕΩΤΕΧΝΙΚΩΝ ΕΠΙΣΤΗΜΩΝ ΚΑΙ ΔΙΑΧΕΙΡΙΣΗΣ ΠΕΡΙΒΑΛΛΟΝΤΟΣ. Πτυχιακή εργασία

ΤΕΧΝΟΛΟΓΙΚΟ ΠΑΝΕΠΙΣΤΗΜΙΟ ΚΥΠΡΟΥ ΣΧΟΛΗ ΓΕΩΤΕΧΝΙΚΩΝ ΕΠΙΣΤΗΜΩΝ ΚΑΙ ΔΙΑΧΕΙΡΙΣΗΣ ΠΕΡΙΒΑΛΛΟΝΤΟΣ. Πτυχιακή εργασία ΤΕΧΝΟΛΟΓΙΚΟ ΠΑΝΕΠΙΣΤΗΜΙΟ ΚΥΠΡΟΥ ΣΧΟΛΗ ΓΕΩΤΕΧΝΙΚΩΝ ΕΠΙΣΤΗΜΩΝ ΚΑΙ ΔΙΑΧΕΙΡΙΣΗΣ ΠΕΡΙΒΑΛΛΟΝΤΟΣ Πτυχιακή εργασία ΠΡΟΣΔΙΟΡΙΣΜΟΣ ΔΕΙΚΤΩΝ ΚΑΤΑΝΑΛΩΣΗΣ ΕΝΕΡΓΕΙΑΣ ΣΤΑ ΑΝΤΛΙΟΣΤΑΣΙΑ ΤΟΥ ΤΜΗΜΑΤΟΣ ΑΝΑΠΤΥΞΕΩΣ ΥΔΑΤΩΝ Γεωργίου

Διαβάστε περισσότερα

Διάρθρωση. Δίκτυα Υπολογιστών I Βασικές Αρχές Δικτύωσης. Διάρθρωση. Δίκτυο Υπολογιστών: ένας απλός ορισμός. Ευάγγελος Παπαπέτρου

Διάρθρωση. Δίκτυα Υπολογιστών I Βασικές Αρχές Δικτύωσης. Διάρθρωση. Δίκτυο Υπολογιστών: ένας απλός ορισμός. Ευάγγελος Παπαπέτρου Δίκτυα Υπολογιστών I Βασικές Αρχές Δικτύωσης Ευάγγελος Παπαπέτρου Τμ. Μηχ. Η/Υ & Πληροφορικής, Παν. Ιωαννίνων Ε.Παπαπέτρου (Τμ.Μηχ. Η/Υ & Πληροφορικής) MYY703: Δίκτυα Υπολογιστών I 1 / 22 Ε.Παπαπέτρου

Διαβάστε περισσότερα

Τμήμα του εθνικού οδικού δικτύου (Αττική οδός)

Τμήμα του εθνικού οδικού δικτύου (Αττική οδός) Λέξεις Κλειδιά: Δίκτυο υπολογιστών (Computer Network), τοπικό δίκτυο (LAN), δίκτυο ευρείας περιοχής (WAN), μόντεμ (modem), κάρτα δικτύου, πρωτόκολλο επικοινωνίας, εξυπηρέτης (server), πελάτης (client),

Διαβάστε περισσότερα

Τηλεματική, Διαδίκτυα και Κοινωνία Κυψελωτή Τηλεφωνία

Τηλεματική, Διαδίκτυα και Κοινωνία Κυψελωτή Τηλεφωνία Τηλεματική, Διαδίκτυα και Κοινωνία Κυψελωτή Τηλεφωνία 1 Κυψελωτή Τηλεφωνία Για την ανάπτυξη νέων δικτύων κινητών επικοινωνιών υιοθετήθηκε η σχεδιαστική αρχή της κυψελωτής τηλεφωνίας που παρά την περιορισμένη

Διαβάστε περισσότερα

Εφαρμογές της κινητής τηλεφωνίας στην ιατρική

Εφαρμογές της κινητής τηλεφωνίας στην ιατρική Εφαρμογές της κινητής τηλεφωνίας στην ιατρική Λεωνίδας Μανωλόπουλος Αναπληρωτής Καθηγητής, Ιατρική Σχολή Παν/μίου Αθηνών Εισαγωγή Τα κινητά τηλέφωνα αποτελούν αναπόσπαστο τμήμα της καθημερινής ζωής στον

Διαβάστε περισσότερα

Ικανότητες UE. UE classmark: βασικό σύνολο πληροφοριών για τις ικανότητες/δυνατότητες του UE

Ικανότητες UE. UE classmark: βασικό σύνολο πληροφοριών για τις ικανότητες/δυνατότητες του UE Ικανότητες UE UE classmark: βασικό σύνολο πληροφοριών για τις ικανότητες/δυνατότητες του UE Π.χ. βασικές δυνατότητες UE classmark 3 ιαθέσιµοι τρόποι λειτουργίας UMTS FDD ή TDD ιπλός τρόπος λειτουργίας

Διαβάστε περισσότερα

Κεφάλαιο 1 Ε Π Α Ν Α Λ Η Ψ Η

Κεφάλαιο 1 Ε Π Α Ν Α Λ Η Ψ Η Κεφάλαιο 1 Ε Π Α Ν Α Λ Η Ψ Η Αρχές Δικτύων Επικοινωνιών Σελ. 9-50 Γεώργιος Γιαννόπουλος ΠΕ19, ggiannop (at) sch.gr http://diktya-epal-b.ggia.info/ Creative Commons License 3.0 Share-Alike Σύνδεση από σημείο

Διαβάστε περισσότερα

ΒΑΣΙΚΕΣ ΥΠΗΡΕΣΙΕΣ ΤΟΥ

ΒΑΣΙΚΕΣ ΥΠΗΡΕΣΙΕΣ ΤΟΥ ΒΑΣΙΚΕΣ ΥΠΗΡΕΣΙΕΣ ΤΟΥ ΔΙΑΔΙΚΤΥΟΥ ΜΑΘΗΜΑ 1ο - 1ο Τ.Ε.Ε. Κατερίνης Καθηγητής Πληροφορικής ΠΕ20 1-1 Δίκτυα Υπολογιστών Δίκτυο (Network) Δύο οι περισσότεροι υπολογιστές ή άλλα πληροφορικά μέσα (π.χ. εκτυπωτές,

Διαβάστε περισσότερα

Μάθημα 4.7 Θύρες περιφερειακών

Μάθημα 4.7 Θύρες περιφερειακών Μάθημα 4.7 Θύρες περιφερειακών - Εισαγωγή - Η σειριακή θύρα - Η παράλληλη θύρα - Οι θύρες πληκτρολογίου και ποντικιού τύπου PS/2 - Ο διάδρομος USB Όταν ολοκληρώσεις το μάθημα αυτό θα μπορείς: Να αναφέρεις

Διαβάστε περισσότερα

Ασύρµατη λειτουργία (µόνο σε επιλεγµένα µοντέλα) Οδηγός χρήσης

Ασύρµατη λειτουργία (µόνο σε επιλεγµένα µοντέλα) Οδηγός χρήσης Ασύρµατη λειτουργία (µόνο σε επιλεγµένα µοντέλα) Οδηγός χρήσης Copyright 2007 Hewlett-Packard Development Company, L.P. Η ονοµασία Windows είναι εµπορικό σήµα κατατεθέν της εταιρείας Microsoft Corporation

Διαβάστε περισσότερα

WEB # API # CLOUD communicationsolution. Routee. Powered by

WEB # API # CLOUD communicationsolution. Routee. Powered by WEB # API # CLOUD communicationsolution Routee Powered by Η AMD Telecom, δραστηριοποιείται σε όλον τον κόσμο προσφέροντας υπηρεσίες συνδεσιμότητας SMS και Φωνής (Voice) σε ένα ευρύ φάσμα εταιριών, όπως

Διαβάστε περισσότερα

ΝΕΕΣ ΤΕΧΝΟΛΟΓΙΕΣ & ΧΡΗΣΗ ΣΤΗΝ ΥΠΑΙΘΡΙΑ ΕΡΓΑΣΙΑ (1/5) ΔΙΕΥΚΟΛΥΝΣΗ ή (ακόμη ένα) ΒΑΣΑΝΟ???

ΝΕΕΣ ΤΕΧΝΟΛΟΓΙΕΣ & ΧΡΗΣΗ ΣΤΗΝ ΥΠΑΙΘΡΙΑ ΕΡΓΑΣΙΑ (1/5) ΔΙΕΥΚΟΛΥΝΣΗ ή (ακόμη ένα) ΒΑΣΑΝΟ??? ΝΕΕΣ ΤΕΧΝΟΛΟΓΙΕΣ & ΧΡΗΣΗ ΣΤΗΝ ΥΠΑΙΘΡΙΑ ΕΡΓΑΣΙΑ (1/5) ΔΙΕΥΚΟΛΥΝΣΗ ή (ακόμη ένα) ΒΑΣΑΝΟ??? 1 4 2 3 ΝΕΕΣ ΤΕΧΝΟΛΟΓΙΕΣ & ΧΡΗΣΗ ΣΤΗΝ ΥΠΑΙΘΡΙΑ ΕΡΓΑΣΙΑ (2/5) Τι χρειαζόμαστε στη ύπαιθρο? - Ακριβή θέση (x,y,z)

Διαβάστε περισσότερα

Νέες Επικοινωνιακές Τεχνολογίες

Νέες Επικοινωνιακές Τεχνολογίες Νέες Επικοινωνιακές Τεχνολογίες Λύσεις Θεμάτων http://nop33.wordpress.com Τι ορίζουμε ως Τοπικό Δίκτυο Υπολογιστών; Ποια είναι τα βασικά χαρακτηριστικά των Τοπικών Δικτύων; Ποιες οι βασικές τοπολογίες

Διαβάστε περισσότερα

Ακριβής 3Δ Προσδιορισμός Θέσης των Σημείων του Κεντρικού Τομέα του Δικτύου LVD με τη μέθοδο του Σχετικού Στατικού Εντοπισμού

Ακριβής 3Δ Προσδιορισμός Θέσης των Σημείων του Κεντρικού Τομέα του Δικτύου LVD με τη μέθοδο του Σχετικού Στατικού Εντοπισμού Σχολή Μηχανικής και Τεχνολογίας Πτυχιακή εργασία Ακριβής 3Δ Προσδιορισμός Θέσης των Σημείων του Κεντρικού Τομέα του Δικτύου LVD με τη μέθοδο του Σχετικού Στατικού Εντοπισμού Χατζηιωάννου Ανδρέας Λεμεσός,

Διαβάστε περισσότερα

ΣΧΕΔΙΑΣΜΟΣ ΕΠΙΓΕΙΟΥ ΣΥΣΤΗΜΑΤΟΣ ΑΛΥΣΟΚΙΝΗΣΗΣ ΓΙΑ ΜΕΤΑΦΟΡΑ ΤΡΟΛΕΪ

ΣΧΕΔΙΑΣΜΟΣ ΕΠΙΓΕΙΟΥ ΣΥΣΤΗΜΑΤΟΣ ΑΛΥΣΟΚΙΝΗΣΗΣ ΓΙΑ ΜΕΤΑΦΟΡΑ ΤΡΟΛΕΪ ΤΕΧΝΟΛΟΓΙΚΟ ΠΑΝΕΠΙΣΤΗΜΙΟ ΚΥΠΡΟΥ ΣΧΟΛΗ ΜΗΧΑΝΙΚΗΣ ΚΑΙ ΤΕΧΝΟΛΟΓΙΑΣ Πτυχιακή εργασία ΣΧΕΔΙΑΣΜΟΣ ΕΠΙΓΕΙΟΥ ΣΥΣΤΗΜΑΤΟΣ ΑΛΥΣΟΚΙΝΗΣΗΣ ΓΙΑ ΜΕΤΑΦΟΡΑ ΤΡΟΛΕΪ Μάριος Σταυρίδης Λεμεσός, Ιούνιος 2017 ΤΕΧΝΟΛΟΓΙΚΟ ΠΑΝΕΠΙΣΤΗΜΙΟ

Διαβάστε περισσότερα

Ειδικά θέματα σε κινητά και ασύρματα δίκτυα

Ειδικά θέματα σε κινητά και ασύρματα δίκτυα Ειδικά θέματα σε κινητά και ασύρματα δίκτυα Εύη Παπαϊωάννου papaioan@ceid.upatras.gr papaioan@upatras.gr Πότε και πού; Ωρολόγιο πρόγραμμα Η φυσική παρουσία ΔΕΝ είναι υποχρεωτική Η εμπρόθεσμη εκπλήρωση

Διαβάστε περισσότερα

Ασύρµατη λειτουργία( Μόνο σε επιλεγµένα µοντέλα)

Ασύρµατη λειτουργία( Μόνο σε επιλεγµένα µοντέλα) Ασύρµατη λειτουργία( Μόνο σε επιλεγµένα µοντέλα) Οδηγός χρήσης Copyright 2006 Hewlett-Packard Development Company, L.P. Οι επωνυµίες Microsoft και Windows είναι εµπορικά σήµατα της εταιρίας Microsoft Corporation.

Διαβάστε περισσότερα

Δίκτυα κινητής τηλεφωνίας (1G)

Δίκτυα κινητής τηλεφωνίας (1G) Δίκτυα κινητής τηλεφωνίας (1G) *Generation = γενιά Το πρώτο αυτοματοποιημένο δίκτυο κινητής τηλεφωνίας λειτούργησε στις αρχές της δεκαετίας του '80 στη Σκανδιναβία. Μέχρι τα τέλη της δεκαετίας του '80

Διαβάστε περισσότερα

ΤΕΧΝΟΛΟΓΙΚΟ ΠΑΝΕΠΙΣΤΗΜΙΟ ΚΥΠΡΟΥ ΣΧΟΛΗ ΜΗΧΑΝΙΚΗΣ ΚΑΙ ΤΕΧΝΟΛΟΓΙΑΣ. Πτυχιακή εργασία ΟΛΙΣΘΗΡΟΤΗΤΑ ΚΑΙ ΜΑΚΡΟΥΦΗ ΤΩΝ ΟΔΟΔΤΡΩΜΑΤΩΝ ΚΥΚΛΟΦΟΡΙΑΣ

ΤΕΧΝΟΛΟΓΙΚΟ ΠΑΝΕΠΙΣΤΗΜΙΟ ΚΥΠΡΟΥ ΣΧΟΛΗ ΜΗΧΑΝΙΚΗΣ ΚΑΙ ΤΕΧΝΟΛΟΓΙΑΣ. Πτυχιακή εργασία ΟΛΙΣΘΗΡΟΤΗΤΑ ΚΑΙ ΜΑΚΡΟΥΦΗ ΤΩΝ ΟΔΟΔΤΡΩΜΑΤΩΝ ΚΥΚΛΟΦΟΡΙΑΣ ΤΕΧΝΟΛΟΓΙΚΟ ΠΑΝΕΠΙΣΤΗΜΙΟ ΚΥΠΡΟΥ ΣΧΟΛΗ ΜΗΧΑΝΙΚΗΣ ΚΑΙ ΤΕΧΝΟΛΟΓΙΑΣ Πτυχιακή εργασία ΟΛΙΣΘΗΡΟΤΗΤΑ ΚΑΙ ΜΑΚΡΟΥΦΗ ΤΩΝ ΟΔΟΔΤΡΩΜΑΤΩΝ ΚΥΚΛΟΦΟΡΙΑΣ Χριστοδούλου Αντρέας Λεμεσός 2014 2 ΤΕΧΝΟΛΟΓΙΚΟ ΠΑΝΕΠΙΣΤΗΜΙΟ ΚΥΠΡΟΥ

Διαβάστε περισσότερα

MY FLEET. Σύστημα Αδιάλειπτης Παρακολούθησης στόλου οχημάτων

MY FLEET. Σύστημα Αδιάλειπτης Παρακολούθησης στόλου οχημάτων MY FLEET Σύστημα Αδιάλειπτης Παρακολούθησης στόλου οχημάτων Μy Fleet Τι είναι το Μy Fleet Επιλογές Χρήστη Βασικές λειτουργίες Επιπρόσθετες λειτουργίες Οφέλη από τη χρήση 23/3/2016 Ολοκληρωμένα Συστήματα

Διαβάστε περισσότερα

Διατίθεται εφαρμογή για κινητά τηλέφωνα android και ios. Γενική Αρχιτεκτονική Συστήματος

Διατίθεται εφαρμογή για κινητά τηλέφωνα android και ios. Γενική Αρχιτεκτονική Συστήματος Exandas-gis Η εφαρμογή Exandas-Gis είναι μια διαδικτυακή εφαρμογή Τηλεματικής Παρακολούθησης και Διαχείρισης Στόλου Οχημάτων σε πραγματικό χρόνο.η εφαρμογή είναι προσβάσιμη από οποιοδήποτε σημείο με την

Διαβάστε περισσότερα

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

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

Διαβάστε περισσότερα

ΕΠΙΚΟΙΝΩΝΙΕΣ ΔΕΔΟΜΕΝΩΝ ΚΑΙ ΤΕΧΝΟΛΟΓΙΕΣ INTERNET

ΕΠΙΚΟΙΝΩΝΙΕΣ ΔΕΔΟΜΕΝΩΝ ΚΑΙ ΤΕΧΝΟΛΟΓΙΕΣ INTERNET ΕΠΙΚΟΙΝΩΝΙΕΣ ΔΕΔΟΜΕΝΩΝ ΚΑΙ ΤΕΧΝΟΛΟΓΙΕΣ INTERNET Κεφάλαιο 6: Συσκευές τηλεπικοινωνιών και δικτύωσης (Θ) Ενεργά στοιχεία δικτύων Δύο συστήματα Η/Υ μπορούν να συνδεθούν χρησιμοποιώντας: Δια-αποδιαμορφωτές

Διαβάστε περισσότερα

ΠΤΥΧΙΑΚΗ ΕΡΕΥΝΑ ΥΠΗΡΕΣΙΕΣ ΚΑΙ ΕΦΑΡΜΟΓΕΣ ΑΣΥΡΜΑΤΩΝ ΔΙΚΤΥΩΝ ΙΩΑΝΝΟΥ ΓΕΩΡΓΙΟΣ ΛΕΥΚΩΣΙΑ-ΚΥΠΡΟΣ

ΠΤΥΧΙΑΚΗ ΕΡΕΥΝΑ ΥΠΗΡΕΣΙΕΣ ΚΑΙ ΕΦΑΡΜΟΓΕΣ ΑΣΥΡΜΑΤΩΝ ΔΙΚΤΥΩΝ ΙΩΑΝΝΟΥ ΓΕΩΡΓΙΟΣ ΛΕΥΚΩΣΙΑ-ΚΥΠΡΟΣ ΑΝΩΤΑΤΟ ΤΕΧΝΟΛΟΓΙΚΟ ΕΚΠΑΙΔΕΥΤΙΚΟ ΙΔΡΥΜΑ ΗΠΕΙΡΟΥ ΤΜΗΜΑ ΤΗΛΕΠΛΗΡΟΦΟΡΙΚΗ ΚΑΙ ΔΙΟΙΚΗΣΗ ΠΤΥΧΙΑΚΗ ΕΡΕΥΝΑ ΙΩΑΝΝΟΥ ΓΕΩΡΓΙΟΣ ΛΕΥΚΩΣΙΑ-ΚΥΠΡΟΣ 1 ΠΡΟΛΟΓΟΣ Δυο από τα σημαντικότερα επιτεύγματα της τεχνολογίας είναι:

Διαβάστε περισσότερα

Πρόγραμμα Πιστοποίησης Γνώσεων και Δεξιοτήτων H/Y ΕΝΟΤΗΤΑ 1: «ΒΑΣΙΚΕΣ ΕΝΝΟΙΕΣ ΠΛΗΡΟΦΟΡΙΚΗΣ»

Πρόγραμμα Πιστοποίησης Γνώσεων και Δεξιοτήτων H/Y ΕΝΟΤΗΤΑ 1: «ΒΑΣΙΚΕΣ ΕΝΝΟΙΕΣ ΠΛΗΡΟΦΟΡΙΚΗΣ» Πρόγραμμα Πιστοποίησης Γνώσεων και Δεξιοτήτων H/Y ΕΝΟΤΗΤΑ 1: «ΒΑΣΙΚΕΣ ΕΝΝΟΙΕΣ ΠΛΗΡΟΦΟΡΙΚΗΣ» Μάθημα 0.2: Το Λογισμικό (Software) Δίκτυα υπολογιστών Αντώνης Χατζηνούσκας 2 ΠΕΡΙΕΧΟΜΕΝΑ Α. Σκοπός του Μαθήματος

Διαβάστε περισσότερα

Εφαρμογή Διαχείρισης Στόλου Οχημάτων «RouteΤracker»

Εφαρμογή Διαχείρισης Στόλου Οχημάτων «RouteΤracker» Λειτουργικά Χαρακτηριστικά Εφαρμογή Διαχείρισης Στόλου Οχημάτων «RouteΤracker» Εφαρμογή Διαχείρισης Στόλου Οχημάτων «RouteΤracker» Η εφαρμογή διαχείρισης στόλου οχημάτων RouteTracker δίνει τη δυνατότητα

Διαβάστε περισσότερα

Σελίδα.1/1 www.1999.gr

Σελίδα.1/1 www.1999.gr Σελίδα.1/1 LXT-4 WATCH GPS GSM TRACKER ΟΔΗΓΙΕΣ ΧΡΗΣΗΣ Κεφάλαιο 1 γενική εισαγωγή 1.1 Εμφάνιση 1.2 Λειτουργίες Ο κάθε επιλεγμένος αριθμός μπορεί να πάρει τις πληροφορίες θέσης άμεσα μέσω της ερώτησης SMS,

Διαβάστε περισσότερα

Ερώτηση 1 η μεταγωγής κυκλώματος? : Ποια είναι τα κύρια χαρακτηριστικά της. Ερώτηση 2 η : Ποια είναι τα κύρια χαρακτηριστικά της μεταγωγής μηνύματος?

Ερώτηση 1 η μεταγωγής κυκλώματος? : Ποια είναι τα κύρια χαρακτηριστικά της. Ερώτηση 2 η : Ποια είναι τα κύρια χαρακτηριστικά της μεταγωγής μηνύματος? Μετάδοση Δεδομένων Δίκτυα Υπολογιστών 68 Ερώτηση 1 η μεταγωγής κυκλώματος? : Ποια είναι τα κύρια χαρακτηριστικά της Απάντηση : Στα δίκτυα μεταγωγής κυκλώματος (circuit switching networks), η μετάδοση των

Διαβάστε περισσότερα

ΠΤΥΧΙΑΚΗ. Θέμα πτυχιακής: Voice over IP. Ονοματεπώνυμο: Κόκκαλη Αλεξάνδρα

ΠΤΥΧΙΑΚΗ. Θέμα πτυχιακής: Voice over IP. Ονοματεπώνυμο: Κόκκαλη Αλεξάνδρα ΠΤΥΧΙΑΚΗ Θέμα πτυχιακής: Voice over IP Ονοματεπώνυμο: Κόκκαλη Αλεξάνδρα Εισαγωγή στην Υπηρεσία Voice over IP Το Voice over IP (VoIP) είναι μια καινούργια τεχνολογία η οποία προσφέρει φωνητική συνομιλία

Διαβάστε περισσότερα

ΠΤΥΧΙΑΚΗ ΕΡΓΑΣΙΑ Δυναμική προσωποποιημένη ενημέρωση προσφορών Super Markets στη Θεσσαλονίκη

ΠΤΥΧΙΑΚΗ ΕΡΓΑΣΙΑ Δυναμική προσωποποιημένη ενημέρωση προσφορών Super Markets στη Θεσσαλονίκη ΠΤΥΧΙΑΚΗ ΕΡΓΑΣΙΑ Δυναμική προσωποποιημένη ενημέρωση προσφορών Super Markets στη Θεσσαλονίκη Παπαδόπουλου Κυριάκου Αρ. Μητρώου: 093507 Επιβλέπων καθηγητής: Ηλιούδης Χρήστος Εισαγωγή - Σκοπός Εργασίας Καινοτόμες

Διαβάστε περισσότερα

ΟΔΗΓΙΕΣ ΧΡΗΣΗΣ LIVETRIP TRAVELLER

ΟΔΗΓΙΕΣ ΧΡΗΣΗΣ LIVETRIP TRAVELLER ΟΔΗΓΙΕΣ ΧΡΗΣΗΣ LIVETRIP TRAVELLER Η εφαρμογή LiveTripTraveller διατίθεται για κινητά τηλέφωνα με λειτουργικό σύστημα Android. Στο υπο-ιστοσελίδα www.livetrips.com/sources μπορείτε να κατεβάσετε την εφαρμογή

Διαβάστε περισσότερα

Το Ασύρματο Δίκτυο TETRA. Αντωνίου Βρυώνα (Α.Μ. 1019)

Το Ασύρματο Δίκτυο TETRA. Αντωνίου Βρυώνα (Α.Μ. 1019) Το Ασύρματο Δίκτυο TETRA Αντωνίου Βρυώνα (Α.Μ. 1019) Περίληψη Γενικά Χαρακτηριστικά Τι είναι το TETRA Γενικά στοιχεία Αρχιτεκτονική δικτύου Πρωτόκολλο TETRA Υπηρεσίες TETRA Κλήσεις DMO δικτύου TETRA Ασφάλεια

Διαβάστε περισσότερα

Ειδικά θέματα σε κινητά και ασύρματα δίκτυα

Ειδικά θέματα σε κινητά και ασύρματα δίκτυα Ειδικά θέματα σε κινητά και ασύρματα δίκτυα Εύη Παπαϊωάννου papaioan@ceid.upatras.gr papaioan@upatras.gr Πότε και πού; Τρίτη, 18.00 20.00, Αίθουσα 101 Παρασκευή, 18.00 20.00, Αίθουσα 101 Η φυσική παρουσία

Διαβάστε περισσότερα

ΓΕΩΓΡΑΦΙΚΑ ΣΥΣΤΗΜΑΤΑ ΠΛΗΡΟΦΟΡΙΩΝ ΚΑΙ ΤΗΛΕΠΙΣΚΟΠΗΣΗ ΣΤΗΝ ΕΦΑΡΜΟΣΜΕΝΗ ΓΕΩΛΟΓΙΑ

ΓΕΩΓΡΑΦΙΚΑ ΣΥΣΤΗΜΑΤΑ ΠΛΗΡΟΦΟΡΙΩΝ ΚΑΙ ΤΗΛΕΠΙΣΚΟΠΗΣΗ ΣΤΗΝ ΕΦΑΡΜΟΣΜΕΝΗ ΓΕΩΛΟΓΙΑ ΓΕΩΓΡΑΦΙΚΑ ΣΥΣΤΗΜΑΤΑ ΠΛΗΡΟΦΟΡΙΩΝ ΚΑΙ ΤΗΛΕΠΙΣΚΟΠΗΣΗ ΣΤΗΝ ΕΦΑΡΜΟΣΜΕΝΗ ΓΕΩΛΟΓΙΑ Ενότητα 3: Γεωγραφικά Συστήματα Πληροφοριών- Βασικές Έννοιες (Μέρος 2 ο ) Νικολακόπουλος Κωνσταντίνος, Επίκουρος Καθηγητής Σχολή

Διαβάστε περισσότερα

ΚΕΦΑΛΑΙΟ 5. Κύκλος Ζωής Εφαρμογών ΕΝΟΤΗΤΑ 2. Εφαρμογές Πληροφορικής. Διδακτικές ενότητες 5.1 Πρόβλημα και υπολογιστής 5.2 Ανάπτυξη εφαρμογών

ΚΕΦΑΛΑΙΟ 5. Κύκλος Ζωής Εφαρμογών ΕΝΟΤΗΤΑ 2. Εφαρμογές Πληροφορικής. Διδακτικές ενότητες 5.1 Πρόβλημα και υπολογιστής 5.2 Ανάπτυξη εφαρμογών 44 Διδακτικές ενότητες 5.1 Πρόβλημα και υπολογιστής 5.2 Ανάπτυξη εφαρμογών Διδακτικοί στόχοι Σκοπός του κεφαλαίου είναι οι μαθητές να κατανοήσουν τα βήματα που ακολουθούνται κατά την ανάπτυξη μιας εφαρμογής.

Διαβάστε περισσότερα

Εγχειρίδιο Έναρξης Vodafone Mobile Connect USB Stick. Σχεδιάστηκε για τη Vodafone

Εγχειρίδιο Έναρξης Vodafone Mobile Connect USB Stick. Σχεδιάστηκε για τη Vodafone Εγχειρίδιο Έναρξης Vodafone Mobile Connect USB Stick Σχεδιάστηκε για τη Vodafone Καλωσορίσατε στον κόσμο των κινητών επικοινωνιών 1 Καλώς ήρθατε 2 Ρύθμιση του USB Stick 3 Εκκίνηση λογισμικού 4 Γενική επισκόπηση

Διαβάστε περισσότερα

Ηλεκτρονικός οδηγός για τους φοιτητές ενός Α.Ε.Ι.

Ηλεκτρονικός οδηγός για τους φοιτητές ενός Α.Ε.Ι. Ανώτατο Εκπαιδευτικό Ίδρυμα Πειραιά Τεχνολογικού Τομέα Τμήμα Ηλεκτρονικών Μηχανικών Τ.Ε. Ηλεκτρονικός οδηγός για τους φοιτητές ενός Α.Ε.Ι. Πτυχιιακή Εργασίία Φοιτητής: Δημήτριος Παπαοικονόμου ΑΜ: 36712

Διαβάστε περισσότερα

Προσαρμοζόμενα. μενα και Εξατομικευμένα Επικοινωνιακά Περιβάλλοντα. Κων/νος Μουρλάς Επίκουρος Καθηγητής Τμήμα Επικοινωνίας & ΜΜΕ

Προσαρμοζόμενα. μενα και Εξατομικευμένα Επικοινωνιακά Περιβάλλοντα. Κων/νος Μουρλάς Επίκουρος Καθηγητής Τμήμα Επικοινωνίας & ΜΜΕ Προσαρμοζόμενα μενα και Εξατομικευμένα Επικοινωνιακά Περιβάλλοντα Κων/νος Μουρλάς Επίκουρος Καθηγητής Τμήμα Επικοινωνίας & ΜΜΕ Η Προσαρμογή και η Εξατομίκευση Συστημάτων Ορισμός του Προβλήματος Βασικοί

Διαβάστε περισσότερα

Ασύρµατη λειτουργία (µόνο σε επιλεγµένα µοντέλα)

Ασύρµατη λειτουργία (µόνο σε επιλεγµένα µοντέλα) Ασύρµατη λειτουργία (µόνο σε επιλεγµένα µοντέλα) Οδηγός χρήσης Copyright 2006 Hewlett-Packard Development Company, L.P. Οι επωνυµίες Microsoft και Windows είναι εµπορικά σήµατα κατατεθέντα της εταιρίας

Διαβάστε περισσότερα

Συστήματα πανταχού παρόντος υπολογιστή σε περιβάλλοντα υβριδικών βιβλιοθηκών

Συστήματα πανταχού παρόντος υπολογιστή σε περιβάλλοντα υβριδικών βιβλιοθηκών Συστήματα πανταχού παρόντος υπολογιστή σε περιβάλλοντα υβριδικών βιβλιοθηκών Βερονίκης Σπύρος Τμήμα Αρχειονομίας- Βιβλιοθηκονομίας, Ιόνιο Πανεπιστήμιο spver@ionio.gr Stoica Adrian Τμήμα Ηλεκτρολόγων Μηχανικών

Διαβάστε περισσότερα

Ιατρική Πληροφορική. Δρ. Π. ΑΣΒΕΣΤΑΣ ΤΜΗΜΑ ΜΗΧΑΝΙΚΩΝ ΒΙΟΪΑΤΡΙΚΗΣ ΤΕΧΝΟΛΟΓΙΑΣ Τ.Ε. Χρήσιμοι Σύνδεσμοι

Ιατρική Πληροφορική. Δρ. Π. ΑΣΒΕΣΤΑΣ ΤΜΗΜΑ ΜΗΧΑΝΙΚΩΝ ΒΙΟΪΑΤΡΙΚΗΣ ΤΕΧΝΟΛΟΓΙΑΣ Τ.Ε. Χρήσιμοι Σύνδεσμοι Ιατρική Πληροφορική Δρ. Π. ΑΣΒΕΣΤΑΣ ΤΜΗΜΑ ΜΗΧΑΝΙΚΩΝ ΒΙΟΪΑΤΡΙΚΗΣ ΤΕΧΝΟΛΟΓΙΑΣ Τ.Ε. Χρήσιμοι Σύνδεσμοι Διαλέξεις μαθήματος: http://medisp.teiath.gr/eclass/courses/tio103/ https://eclass.teiath.gr/courses/tio100/

Διαβάστε περισσότερα

»Τι είναι η Spartan;

»Τι είναι η Spartan; by Spartan Security »Τι είναι η Spartan; 24ωρο Κέντρο Λήψης Σημάτων Συναγερμού και Εικόνας (Κ.Λ.Σ.Σ.). Πάροχος ηλεκτρονικής ασφάλειας μέσω ψηφιακής παρακολούθησης συστημάτων ασφαλείας. Πρώτο Κ.Λ.Σ.Σ. στην

Διαβάστε περισσότερα

Α5.1 Εισαγωγή στα Δίκτυα. Α Λυκείου

Α5.1 Εισαγωγή στα Δίκτυα. Α Λυκείου Α5.1 Εισαγωγή στα Δίκτυα Α Λυκείου Εισαγωγή Δίκτυο Υπολογιστών (Computer Network) είναι μια ομάδα από δύο ή περισσότερους υπολογιστές ή άλλες συσκευές που συνδέονται μεταξύ τους με σκοπό να ανταλλάσσουν

Διαβάστε περισσότερα

ΠΛΗΡΟΦΟΡΙΑΚΑ & ΤΗΛΕΠΙΚΟΙΝΩΝΙΑΚΑ ΣΥΣΤΗΜΑΤΑ

ΠΛΗΡΟΦΟΡΙΑΚΑ & ΤΗΛΕΠΙΚΟΙΝΩΝΙΑΚΑ ΣΥΣΤΗΜΑΤΑ Οικονοµικό Πανεπιστήµιο Αθηνών Τµήµα ιοικητικής Επιστήµης & Τεχνολογίας ΠΛΗΡΟΦΟΡΙΑΚΑ & ΤΗΛΕΠΙΚΟΙΝΩΝΙΑΚΑ ΣΥΣΤΗΜΑΤΑ Κεφάλαιο 10 ίκτυα Γιώργος Γιαγλής Περίληψη Κεφαλαίου 10 Τεχνολογίες Μετάδοσης εδοµένων

Διαβάστε περισσότερα

devolo dlan powerline technology Σύντομη παρουσίαση dlan 1200+ WiFi ac

devolo dlan powerline technology Σύντομη παρουσίαση dlan 1200+ WiFi ac devolo dlan powerline technology Σύντομη παρουσίαση dlan 1200+ WiFi ac dlan 1200+ WiFi ac 2 dlan 1200+ WiFi ac Υφιστάμενη κατάσταση Οι φορητές συσκευές όλο πληθαίνουν καθημερινά. Όλο και περισσότεροι χρήστες

Διαβάστε περισσότερα

An innovative and autonomous Location Based e-tourist guide application

An innovative and autonomous Location Based e-tourist guide application An innovative and autonomous Location Based e-tourist guide application Christos Kasketis Department of Telecommunications Science and Technology, University of Peloponnese, Greece Abstract Στόχος της

Διαβάστε περισσότερα

Σύντομη παρουσίαση των εργαλείων/εντολών telnet, ping, traceroute nslookup και nmap, zenmap

Σύντομη παρουσίαση των εργαλείων/εντολών telnet, ping, traceroute nslookup και nmap, zenmap Σύντομη παρουσίαση των εργαλείων/εντολών telnet, ping, traceroute nslookup και nmap, zenmap Version 2.00 Επιμέλεια Σημειώσεων: Δημήτρης Κόγιας Πατρικάκης Χαράλαμπος Πίνακας περιεχομένων TELNET... 2 PING...

Διαβάστε περισσότερα