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

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

Δημοσ.

Το παρακατω 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);
            }
        }
}
);
    

Δημοσ.

Προσθεσα την ready event method στο DOM και παλι τιποτα. ( Αν εννοεις αυτο...)
Μηπως κατι κανω λαθος με το API της google?

Δημοσ.

Μήπως έχεις τα #lati/#long κτλ μέσα σε tabs ή παρόμοια divs που δημιουργούνται μόνο όταν πλοηγηθεί ο χρήστης εκεί; 

 

Εάν ναι, τότε με το ready θαρρώ πως δεν θα τα δει και πάλι. 

 

Π.χ., bootstrap tabs

Δημοσ.

Παραθετω και το 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 δεν εμφανιζει.

Δημοσ.

Δεν ξέρω τι περιμένεις να γίνει, οπότε τα παιρνω με τη σειρά:

 

Ρώτα τον χρήστη αν μου δίνει το 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, θα λειτουργήσει μια χαρά (λογικά).

Δημοσ.

Δεν το έχω τεστάρει, αλλά αυτό λογικά θα παίξει:

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");
}

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

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

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

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

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

Σύνδεση

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

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