2016-07-29 10 views
0

Arbeits Ich baue eine Wetterseite und ich brauche den Standort des Nutzers, um packen die Wetterdaten zu erhalten.Geolocation API nicht

if ((navigator.geolocation)&&(location!=null)) { 
    var locations = null; 
    window.navigator.geolocation.getCurrentPosition(function(position){ 
     var latitude = position.coords.latitude; 
     var longitude = position.coords.longitude; 
     locations = latitude+'/'+longitude; 
     show_all_weather_components(); 
     console.log("1"); 
    }); 
} 
/* If location is not found the set default location as USDC0001, which is default code for washington DC. */ 

var locations= !locations?"USDC0001":locations; 
console.log("2"); 

Ich bekomme 2 zuerst in meiner Konsole. dh. Es wird immer die Standardadresse und nicht die tatsächliche Adresse des Benutzers festgelegt. Ich weiß, es klingt lächerlich, aber gibt es einen Weg, den "nicht blockierenden" Modus des Codes hier zu vermeiden. Oder gibt es eine andere Möglichkeit, den Benutzerstandort zu erfassen. Ich habe auch die ip-Datenbank Api ausprobiert, aber es hat nicht mit Präzision funktioniert.

An einem Punkt dachte ich an eine Verzögerung setzt nur die unten, wenn die Bedingung Teil, aber wegen der unterschiedlichen Module dieses Wetter-App, meine Seite ist schon sehr langsam. Jede Idee wird geschätzt. Danke

+0

Standorte Variable immer null so, wenn die Bedingung nicht –

+0

navigator.geolocation ist kein JQuery Teil, sondern von HTML 5. es auch den Benutzer auffordern Standort auf Seite Last zu teilen. Bis der Benutzer es freigibt, können Sie den Benutzerstandort für den Benutzer nicht abrufen. –

+0

ich, dass, auch wenn ich vorher erlaubt haben, den Standort zu teilen, es ist die Zeit nehmen und die console.log („2“) früher ausgeführt wird als console.log ("1). – santosh433

Antwort

1

Sie haben die anderen Argumente von getCurrentPosition zu verwenden. Hier ein Beispiel:

<!DOCTYPE html> 
<html> 
<head> 
    <title>Test</title> 
</head> 
<body> 
    <div id="result"></div> 
    <script> 
    var result = document.getElementById('result'); 
    if (navigator.geolocation && location != null) {   
     window.navigator.geolocation.getCurrentPosition(function(position){ 
     result.text = position.coords.latitude + '/' + position.coords.longitude; 
     }, function(error) {   
     switch(error.code) { 
      case error.PERMISSION_DENIED: 
      result.innerHTML = "Denied request for Geolocation." 
      break; 
      case error.POSITION_UNAVAILABLE: 
      result.innerHTML = "Location unavailable." 
      break; 
      case error.TIMEOUT: 
      result.innerHTML = "Location request timed out." 
      break; 
      case error.UNKNOWN_ERROR: 
      result.innerHTML = "An unknown error occurred." 
      break; 
     } 
     }, { timeout: 1000, maximumAge: 1000 }); 
    } 
    </script> 
</body> 

+0

Danke, Jede Sache, die der dritte Parameter war fehlte. – santosh433