2016-07-21 3 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.

Verwandte Themen