Το PeersOnMap είναι μια εφαρμογή για Android κινητές συσκευές, που βασίζεται στις συνεισφορές των χρηστών με σκοπό τη δημιουργία ενός χάρτη περισσότερρο φιλικού για πεζούς και ποδηλάτες. Η εφαρμογή προτρέπει τους χρήστες με τη βοήθεια της παιχνιδοποίησης, να ανεβάσουν τα μονοπάτια τους όσο περπατούν ή κάνουν ποδήλατο. Η Ομότιμη Αξιολόγηση (Peer Review) αποτελεί βασικό εργαλείο της εφαρμογής PeersOnMap και βοηθά στη βελτίωση των παραγόμενων χαρτών. Οι χρήστες έχουν τη δυνατότητα μέσα από τη φυσική παρουσία τους σε μια περιοχή, να αξιολογήσουν ή να σχεδιάσουν διορθώσεις για καταγεγραμμένα μονοπάτια που εμφανίζονται στο χάρτη. Ο τελικός στόχος είναι να δημιουργηθεί ένας εναλλακτικός αστικός χάρτης για πεζούς και ποδηλάτες.
Σημείο έναρξης του συστήματος είναι το σύστημα PathsOnMap
Εδώ παρουσιάζεται ο server της εφαρμογής.
Βασικές λειτουργίες του είναι:
- η αποθήκευση των αρχείων των διαδρομών που καταγράφουν οι χρήστες στον φάκελο με όνομα uploads.
- η εξομάλυνση των διαδρομών που καταγράφουν οι χρήστες και η αποθήκευση των αρχείων που προκύπτουν.
- η αποθήκευση στη ΒΔ των αξιολογήσεων των χρηστών.
- η αποθήκευση στη ΒΔ των σχεδιάσεων διόρθωσης μονοπατιών από τους χρήστες.
- η εμφάνιση του χάρτη για πεζούς και για ποδηλάτες που έχει δημιουργηθεί από τις συνεισφορές των χρηστών.
- η αποθήκευση στη ΒΔ του προφίλ των χρηστών που συνδέονται στην εφαρμογή.
- Apache
- PHP
- MySQL
- HTML 5
- CSS 3
- JavaScript
- JQuery
- Google Maps JavaScript API
- Google Maps Directions API
Τη στιγμή συγγραφής αυτού του οδηγού, ο server εκτελείται στο: https://peersonmap.herokuapp.com/
- Εγκατάσταση WampServer
- Τρέξτε τον WampServer και επιλέξτε Put Online
- Καταβάστε (download zip) τον κώδικα από εδώ
- Αποσυμπιέστε τον φάκελο
- Αλλάξτε το όνομα του root directory (PeersOnMap-server-master) σε pom
- Kάντε αποκοπή επικόληση του φακέλου στον φάκελο www του WampServer που βρίσκεται στην διαδρομή C:\wamp\www ή C:\wamp64\www
- Ανοίξτε ένα browser και πηγαίνετε στην διεύθυνση: localhost. Από την σελίδα που θα εμφανιστεί επιλέξτε phpmyadmin
- Δημιουργήστε μια νέα βάση δεδομένων επιλέγοντας Νέα και στην συνέχεια γράψτε για όνομα της βάσης δεδομένων: pom_db και για σύνθεση: utf8_general_ci και κάντε κλικ στο κουμπί Δημιουργία
- Επιλέξτε την βάση που δημιουργήσατε και πατήστε στην ετικέτα Δικαιώματα. Στην συνέχεια επιλέξτε Προσθήκη χρήστη. Από εκεί γράψτε για όνομα χρήστη: pom_apap, για φιλοξενητή: localhost και για κωδικό πρόσβασης: !apap1324. Επιλέξτε από Βάση δεδομένων για χρήστη: πλήρη διακιώματα και από Γενικά δικαιώματα: Επιλογή όλων. Μετά πατήστε στο κουμπί: Εκτέλεση
- Επιλέξτε την ετικέτα Κώδικας SQL και τρέξτε τα παρακάτω ερωτήματα SQL:
DROP TABLE IF EXISTS
players
; CREATE TABLE IF NOT EXISTSplayers
(uid
int(11) NOT NULL AUTO_INCREMENT,name
varchar(50) NOT NULL,encrypted_password
varchar(80) NOT NULL,salt
varchar(10) NOT NULL,created_at
datetime DEFAULT NULL,updated_at
datetime DEFAULT NULL,path_set
int(5) NOT NULL DEFAULT '1', PRIMARY KEY (uid
), UNIQUE KEY
DROP TABLE IF EXISTS
paths
; CREATE TABLE IF NOT EXISTSpaths
(uid
int(11) NOT NULL AUTO_INCREMENT,player_id
int(11) NOT NULL,path_raw_google_gpx
varchar(100) NOT NULL,path_smooth_google_gpx
varchar(100) NOT NULL,tags
int(11) NOT NULL,meters
int(11) NOT NULL,new_path
tinyint(1) DEFAULT '1',created_at
datetime DEFAULT NULL,updated_at
datetime DEFAULT NULL, PRIMARY KEY (uid
) ) ENGINE=InnoDB AUTO_INCREMENT=69 DEFAULT CHARSET=utf8;
DROP TABLE IF EXISTS
pathpoints
; CREATE TABLE IF NOT EXISTSpathpoints
(uid
int(11) NOT NULL AUTO_INCREMENT,path_id
int(11) NOT NULL,start_lat
float(10,6) NOT NULL,start_long
float(10,6) NOT NULL,middle_lat
float(10,6) NOT NULL,middle_long
float(10,6) NOT NULL,end_lat
float(10,6) NOT NULL,end_long
float(10,6) NOT NULL, PRIMARY KEY (uid
) ) ENGINE=MyISAM AUTO_INCREMENT=10 DEFAULT CHARSET=utf8;
DROP TABLE IF EXISTS
reviews
; CREATE TABLE IF NOT EXISTSreviews
(uid
int(11) NOT NULL AUTO_INCREMENT,player_id
int(11) NOT NULL,path_id
int(11) NOT NULL,rated
int(1) NOT NULL,rated_tags
int(1) NOT NULL,created_at
datetime DEFAULT NULL,updated_at
datetime DEFAULT NULL, PRIMARY KEY (uid
) ) ENGINE=InnoDB AUTO_INCREMENT=36 DEFAULT CHARSET=utf8;
DROP TABLE IF EXISTS
suggestedpaths
; CREATE TABLE IF NOT EXISTSsuggestedpaths
(uid
int(11) NOT NULL AUTO_INCREMENT,path_id
int(11) NOT NULL,player_id
int(11) NOT NULL,start_lat
float(10,6) NOT NULL,start_long
float(10,6) NOT NULL,end_lat
float(10,6) NOT NULL,end_long
float(10,6) NOT NULL,pending
tinyint(1) NOT NULL DEFAULT '1',rate
int(5) NOT NULL DEFAULT '3',created_at
datetime DEFAULT NULL,updated_at
datetime DEFAULT NULL, PRIMARY KEY (uid
) ) ENGINE=MyISAM AUTO_INCREMENT=18 DEFAULT CHARSET=utf8;
DROP TABLE IF EXISTS
cyclepaths
; CREATE TABLE IF NOT EXISTScyclepaths
(uid
int(11) NOT NULL AUTO_INCREMENT,player_id
int(11) NOT NULL,path_raw_gpx
varchar(100) NOT NULL,path_smooth_gpx
varchar(100) NOT NULL,tags
int(11) NOT NULL,meters
int(11) NOT NULL,new_path
tinyint(1) DEFAULT '1',created_at
datetime DEFAULT NULL,updated_at
datetime DEFAULT NULL, PRIMARY KEY (uid
) ) ENGINE=MyISAM AUTO_INCREMENT=3 DEFAULT CHARSET=utf8;
DROP TABLE IF EXISTS
cyclepathpoints
; CREATE TABLE IF NOT EXISTScyclepathpoints
(uid
int(11) NOT NULL AUTO_INCREMENT,path_id
int(11) NOT NULL,start_lat
float(10,6) NOT NULL,start_long
float(10,6) NOT NULL,middle_lat
float(10,6) NOT NULL,middle_long
float(10,6) NOT NULL,end_lat
float(10,6) NOT NULL,end_long
float(10,6) NOT NULL, PRIMARY KEY (uid
) ) ENGINE=MyISAM AUTO_INCREMENT=3 DEFAULT CHARSET=utf8;
DROP TABLE IF EXISTS
cyclereviews
; CREATE TABLE IF NOT EXISTScyclereviews
(uid
int(11) NOT NULL AUTO_INCREMENT,player_id
int(11) NOT NULL,path_id
int(11) NOT NULL,rated
int(1) NOT NULL,rated_tags
int(1) NOT NULL,created_at
datetime DEFAULT NULL,updated_at
datetime DEFAULT NULL, PRIMARY KEY (uid
) ) ENGINE=MyISAM AUTO_INCREMENT=4 DEFAULT CHARSET=utf8;
DROP TABLE IF EXISTS
sugcyclepaths
; CREATE TABLE IF NOT EXISTSsugcyclepaths
(uid
int(11) NOT NULL AUTO_INCREMENT,path_id
int(11) NOT NULL,player_id
int(11) NOT NULL,start_lat
float(10,6) NOT NULL,start_long
float(10,6) NOT NULL,end_lat
float(10,6) NOT NULL,end_long
float(10,6) NOT NULL,pending
tinyint(1) NOT NULL DEFAULT '1',rate
int(5) NOT NULL DEFAULT '3',created_at
datetime DEFAULT NULL,updated_at
datetime DEFAULT NULL, PRIMARY KEY (uid
) ) ENGINE=MyISAM AUTO_INCREMENT=7 DEFAULT CHARSET=utf8;
DROP TABLE IF EXISTS
playerbalance
; CREATE TABLE IF NOT EXISTSplayerbalance
(uid
int(11) NOT NULL AUTO_INCREMENT,player_id
int(11) NOT NULL,balance
int(5) NOT NULL, PRIMARY KEY (uid
) ) ENGINE=MyISAM AUTO_INCREMENT=23 DEFAULT CHARSET=utf8;
DROP TABLE IF EXISTS
pathstypes
; CREATE TABLE IF NOT EXISTSpathstypes
(uid
int(5) UNSIGNED NOT NULL AUTO_INCREMENT,path_set
int(5) UNSIGNED NOT NULL,name
varchar(50) NOT NULL,set_order
int(2) UNSIGNED NOT NULL, PRIMARY KEY (uid
) ) ENGINE=MyISAM AUTO_INCREMENT=12 DEFAULT CHARSET=utf8;
DROP TABLE IF EXISTS
users
; CREATE TABLE IF NOT EXISTSusers
(id
int(5) UNSIGNED NOT NULL AUTO_INCREMENT,username
varchar(50) NOT NULL,password
varchar(50) NOT NULL, PRIMARY KEY (id
) ) ENGINE=InnoDB AUTO_INCREMENT=5 DEFAULT CHARSET=utf8;
11.Δημιουργία διαχειριστών: Επιλέξτε την βάση pom_db και πατήστε στην καρτέλα Κώδικας SQL. Στη συνέχεια τρέξτε το παρακάτω ερώτημα SQL:
INSERT INTO
users
(username
,password
)VALUES ('john', SHA1('johnPsw' ) ), ('james', SHA1('jamesPsw') ), ('jim', SHA1('jimPsw' ) );
12.Δημιουργία τύπων μονοπατιών: Επιλέξτε τη βάση "pom_db* και πατήστε στην καρτέλα Κώδικας SQL. Στη συνέχεια τρέξτε το παρακάτω ερώτημα SQL:
INSERT INTO
pathstypes
(uid
,path_set
,name
,set_order
) VALUES (1, 1, 'sidewalk', 1), (2, 1, 'crosswalk', 2), (3, 1, 'pedestrian walkway', 3), (4, 1, 'accessible entrance', 4), (5, 1, 'pedestrian bridge', 5), (6, 1, 'pedestrian tunnel', 6), (7, 1, 'trail', 7);
13.Η διεύθυνση που τρέχει ο server τοπικά είναι η Διεύθυνση IPv4 που μπορεί να βρεθεί από τις Λεπτομέριες στις Συνδέσεις Δικτύου και μετά pom, π.χ.: 192.168.0.4/pom/
14. Για να μην υπάρχει πρόβλημα απόρριψης των εισερχόμενων αιτημάτων από την εφαρμογή, ανοίξτε το αρχείο httpd.conf που βρίσκεται στον φάκελο \wamp64\bin\apache\apache2.4.17\conf και αλλάξτε το
onlineoffline tag - don't remove
Require local
σε
onlineoffline tag - don't remove
Require all granted
Απαιτείται αγορά domain name και πακέτου Web Hosting με υποστήριξη PHP, MySQL, HTTP post αιτημάτων από browser και από εφαρμογή Android και δυνατότητας αποθήκευσης αρχείων. Αφού συνδεθεί το Domain Name με το πακέτο, γίνεται η δημιουργία της βάσης δεδομένων κατά αντιστοιχία με όσα περιγράφηκαν παραπάνω και τέλος το ανέβασμα των αρχείων του project.