2016-07-21 13 views
0

ich den folgenden Code haben:Erhalten Sie Position Benutzer in ons.ready nicht funktioniert

ons.ready(function() { 

    navigator.geolocation.getCurrentPosition(
     function(position) { 
      geo.lat = position.coords.latitude; 
      geo.lon = position.coords.longitude; 
     } 
    ); 
}); 

Manchmal, aber nicht die ganze Zeit ich die folgende Fehlermeldung erhalten:

Location access is not available. 
Error in Error callbackId: Geolocation54410059 

muss ich die Position des Benutzers um Daten in die Hauptseite meiner App zu laden. Wo ist der beste Ort dafür?

Antwort

0

ons.ready Feuer, wenn das dom geladen ist, verwenden Sie ein Cordova-Plugin, um Geolocation-Position zu bekommen. Sie können es also nicht verwenden, bevor Cordova bereit ist.

Just do:

document.addEventListener('deviceready', function() { 
    // now cordova is ready 
    navigator.geolocation.getCurrentPosition(function(position) { 
      geo.lat = position.coords.latitude; 
      geo.lon = position.coords.longitude; 
    }); 
}, false); 

Und es wird in Ordnung sein, denke ich.

Edit:

versuchen, diese Optionen auf Ihre Funktion hinzufügen:

navigator.geolocation.getCurrentPosition(function(position) { 
       geo.lat = position.coords.latitude; 
       geo.lon = position.coords.longitude; 
     }, { maximumAge: 3000, timeout: 5000, enableHighAccuracy: true }); 

können Sie, was Wert für ‚enableHighAccuracy‘ wollen setzen und ‚maximumAge‘ aber Sie müssen eine ‚Timeout‘ Option bieten, da Es gibt einige Macken in android:

Android Quirks

If Geolocation service is turned off the onError callback is invoked after timeout interval (if specified). If timeout parameter is not specified then no callback is called.