dios231 Δημοσ. 28 Αυγούστου 2015 Δημοσ. 28 Αυγούστου 2015 Το παρακατω script κανει reverse geocoding και εμφανιζει την θεση του χρηστη στο #position. Το θεμα ειναι οτι εμφανιζει την θεση μονο στον debbuger και οχι αμα το τρεξω κανονικα. Ξερεις κανεις τι μπορει να κανω λαθως? navigator.geolocation.getCurrentPosition(success, fail); function success(position){ lati=position.coords.latitude; lngi=position.coords.longitude; $('#lati').text(lati); $('#long').text(lngi); debugger; } function fail(){ alert("Error Occured With Geolocation"); } geocoder = new google.maps.Geocoder(); debugger; var latlng = new google.maps.LatLng(lati, lngi); geocoder.geocode({'latLng': latlng}, function(results, status) { if (status == google.maps.GeocoderStatus.OK) { debugger; if (results[1]) { $("#position").text(results[0].formatted_address); } } } );
defacer Δημοσ. 28 Αυγούστου 2015 Δημοσ. 28 Αυγούστου 2015 Το #position/#lati/#long δε βρίσκεται ακόμα στο DOM τη στιγμή που τρέχει actually το script σου; Τι κερδίζω; 1
dios231 Δημοσ. 28 Αυγούστου 2015 Μέλος Δημοσ. 28 Αυγούστου 2015 Προσθεσα την ready event method στο DOM και παλι τιποτα. ( Αν εννοεις αυτο...)Μηπως κατι κανω λαθος με το API της google?
groot Δημοσ. 28 Αυγούστου 2015 Δημοσ. 28 Αυγούστου 2015 Μήπως έχεις τα #lati/#long κτλ μέσα σε tabs ή παρόμοια divs που δημιουργούνται μόνο όταν πλοηγηθεί ο χρήστης εκεί; Εάν ναι, τότε με το ready θαρρώ πως δεν θα τα δει και πάλι. Π.χ., bootstrap tabs
dios231 Δημοσ. 28 Αυγούστου 2015 Μέλος Δημοσ. 28 Αυγούστου 2015 Παραθετω και το body της HTML <div class="container"> <div id="main-box"> <h1 class="text-center" id="title">Local Weather ForeCast<h1> <div class="row"> <div class="col-md-4" id="temp-box" ><span id="temperature">50F</span></div> <div class="col-md-6" > <div class="text-center" id="coodrs-title" ><span>Current Location</span></div> <div id="position"> You Current Latitude Is: <span id="lati"></span><br/> You Current Longitude Is: <span id="long"></span> </div> </div> </div> <div class="row"> <div class="col-md-6"><h1 id="position"></h1></div> </div> </div> </div> Μπορει να ειναι και αυτο που λες. Παντως το script εμφανιζει και τα coords στην αρχη. Μονο το position δεν εμφανιζει.
alou Δημοσ. 28 Αυγούστου 2015 Δημοσ. 28 Αυγούστου 2015 Δεν ξέρω τι περιμένεις να γίνει, οπότε τα παιρνω με τη σειρά: Ρώτα τον χρήστη αν μου δίνει το location του. Αν ναι, τρέξει κάτι που λέγεται success και αν όχι fail navigator.geolocation.getCurrentPosition(success, fail); function success(position){ lati=position.coords.latitude; lngi=position.coords.longitude; $('#lati').text(lati); $('#long').text(lngi); debugger; } function fail(){ alert("Error Occured With Geolocation"); } Παρακάτω, δηλώνεις geocoder = new google.maps.Geocoder(); var latlng = new google.maps.LatLng(lati, lngi); geocoder.geocode({'latLng': latlng}, function(results, status) { if (status == google.maps.GeocoderStatus.OK) { if (results[1]) { $("#position").text(results[0].formatted_address); } } } ); Το success θα επιστρέψει την τιμή ασύγχρονα, οπότε η δήλωση var latlng = new google.maps.LatLng(lati, lngi); δεν έχει τα lati, lngi που νομίζεις την ώρα που καλείται. Πρέπει αυτό να γίνει με callback ή promise ή κάτι αντίστοιχο. Επίσης, τα lati, lngi καλό θα ήταν να τα δηλώσεις σαν var κάπου στην αρχή για να είναι πιο ξεκάθαρο το scope. Για παράδειγμα, αν βάλεις το geocoder = new google.maps.Geocoder(); debugger; var latlng = new google.maps.LatLng(lati, lngi); geocoder.geocode({'latLng': latlng}, function(results, status) { if (status == google.maps.GeocoderStatus.OK) { debugger; if (results[1]) { $("#position").text(results[0].formatted_address); } } } ); στο τέλος του success function, θα λειτουργήσει μια χαρά (λογικά).
t(o.ot) Δημοσ. 28 Αυγούστου 2015 Δημοσ. 28 Αυγούστου 2015 Δεν το έχω τεστάρει, αλλά αυτό λογικά θα παίξει: var geocoder = new google.maps.Geocoder(); navigator.geolocation.getCurrentPosition(success, fail); function success(position){ var lati = position.coords.latitude; var lngi = position.coords.longitude; var latlng = new google.maps.LatLng(lati, lngi); $('#lati').text(lati); $('#long').text(lngi); geocoder.geocode({'latLng': latlng}, function(results, status) { if (status == google.maps.GeocoderStatus.OK) { if (results[1]) { $("#position").text(results[0].formatted_address); } } } } function fail(){ alert("Error Occured With Geolocation"); }
dios231 Δημοσ. 29 Αυγούστου 2015 Μέλος Δημοσ. 29 Αυγούστου 2015 Παδια οκ ετρεξε. Τελικα οντως, ηταν αυτο που λεγατε. Ετρεξα το script του toot και ολα ΠΟΠΑ!!!
Προτεινόμενες αναρτήσεις
Δημιουργήστε ένα λογαριασμό ή συνδεθείτε για να σχολιάσετε
Πρέπει να είστε μέλος για να αφήσετε σχόλιο
Δημιουργία λογαριασμού
Εγγραφείτε με νέο λογαριασμό στην κοινότητα μας. Είναι πανεύκολο!
Δημιουργία νέου λογαριασμούΣύνδεση
Έχετε ήδη λογαριασμό; Συνδεθείτε εδώ.
Συνδεθείτε τώρα