Προς το περιεχόμενο

Προτεινόμενες αναρτήσεις

Δημοσ.

Καλησπέρα,

 

οπως λέει και ο τίτλος προσπαθώ να προσθέσω ένα marker που να δείχνει την τρέχουσα θέση του χρήστη που χρησιμοποιεί την web app που φτιάχνω.

Χρησιμοποιώ αυτό εδώ το παράδειγμα : https://developers.google.com/maps/articles/phpsqlajax_v3.

 

το πρόβλημα είναι πως όταν πάω να χρησιμοποιήσω html 5 geolocation api, μου βγάζει άσπρη σελίδα.

 

η ερώτηση μου είναι πως μπορώ να χρησιμοποιήσω το geolocation api (η κατι άλλο αν υπάρχει) ώστε να συμβαδίζει με τον κώδικα του παραδείγματος?

 

Δημοσ.

geolocation με βάση την ip για τα ελληνικά δεδομένα ουσιαστικά είναι άτοπο, στην καλύτερη περίπτωση θα σε δείξει πχ στο κέντρο της Αθήνας στο τάδε ote node, στη χειρότερη σε άλλη πόλη. Μόνο για country έχει κάποια αξία.

Αν πας σε συσκευή με GPS όμως έχεις πολύ περισσότερες δυνατότητες και θα βοηθήσει κάποιο library όπως το jQyery mobile.

Αλλιώς, το καλύτερο που έχεις να κάνεις είναι ένα address geolocation function που θα επιστρέφει lat long το σημείο της διεύθυνσης και μετά θα κάνεις query για το radius που θες.

 

Οπότε, με javascript τσεκάρεις τη συσκευή και είτε κάνεις geolocation από το gps είτε ανοίγεις ένα input στο χρήστη για διεύθυνση.

Δημοσ.

Προσαρμοσε τον κωδικα στο δικο σου προτζεκτ.

var map;
$(function () {
    var options = {
        enableHighAccuracy: true,
        timeout: 5000,
        maximumAge: 0
    };
   
if (navigator.geolocation) {
        navigator.geolocation.getCurrentPosition(displayPosition, error, options);
    }

function error(error) {
        switch (error.code) {
        case error.PERMISSION_DENIED:
            console.log("Ο χρήστης δεν επιτρέπει την χρήση της τοποθεσίας.");
            break;
        case error.POSITION_UNAVAILABLE:
            console.log( "Η τοποθεσία του χρήστη δεν είναι διαθέσιμη");
            break;
        case error.TIMEOUT:
            console.log("Η αίτηση τοποθεσίας έληξη.");
            break;
        case error.UNKNOWN_ERROR:
            console.log("Άγνωστο σφάλμα.");
            break;
        }
    };

function displayPosition(pos) {
        var crd = pos.coords;
        setlocation(crd.latitude, crd.longitude, 15);
    }

function setlocation(lat, lng, zom) {
        setAllMap(null);
        var myLatlng = new google.maps.LatLng(lat, lng);
        map.setCenter(myLatlng);
        map.setZoom(zom);
        var markera = new google.maps.Marker({
            position: myLatlng,
            map: map,
            icon: 'assets/icons/ico_curr_pos.png', 
            optimized: true,
            zIndex: 100000
        });
        markers.push(markera);
        var infowindow = new google.maps.InfoWindow({
            pixelOffset: new google.maps.Size(-16, 0),
        })
        google.maps.event.addListener(markera, 'mousedown', function () {
            infowindow.setContent("<b>Είστε εδώ ");
            infowindow.open(map, markera);
        });
        google.maps.event.addListener(markera, 'mouseup', function () {
            infowindow.close();
        });
    }
}
Δημοσ.

Από τη δική μου εμπειρία πάντως, δε μπορείς να βασιστείς στο navigator.geolocation (ούτε σε οποιαδήποτε άλλη ip geolocation υπηρεσία, όπως το geoiplookup.wikimedia.org που παρατήρησα ότι είναι λίγο πιο αξιόπιστο) αφενός γιατί δεν υποστηρίζεται 100% και αφετέρου το αποτέλεσμα είναι - για την Ελλάδα τουλάχιστον - γτπ. Αν σε ενδιαφέρει να είναι λειτουργικό αυτό που θες να κάνεις, το προσφέρεις μόνο σε κινητές συσκευές που έχεις πρόσβαση σε gps δεδομένα και έχεις fallback για όλα τα υπόλοιπα.

Δημιουργήστε ένα λογαριασμό ή συνδεθείτε για να σχολιάσετε

Πρέπει να είστε μέλος για να αφήσετε σχόλιο

Δημιουργία λογαριασμού

Εγγραφείτε με νέο λογαριασμό στην κοινότητα μας. Είναι πανεύκολο!

Δημιουργία νέου λογαριασμού

Σύνδεση

Έχετε ήδη λογαριασμό; Συνδεθείτε εδώ.

Συνδεθείτε τώρα
  • Δημιουργία νέου...