2016-08-04 8 views
0

Ich benutze Cordova 6.1.1, und ich verwende die neueste Version von Cordova-Plugin-Geolocation. Ich habe sowohl getCurrentPossition(onSuccess,onError) als auch watchPossition(onSuccess, onError) ausprobiert. Und beide aktualisieren meinen Geostandort in (lat, lon) nicht sofort.cordova geolocation nicht beobachten oder den aktuellen Standort sofort

ich die Position

und Tracking-Standort ist definiert als in getTagLocation() meiner locator.js

getTagLocation: function(tagId,callback) { 
     console.log('in getTagLocation func') 
     locator.TrackingLocation(); 
}, 
verfolgen wird:

TrackingLocation: function() { 
    var onSuccess = function(position) { 
     locator.devicePosition.coords.latitude = position.coords.latitude; 
     locator.devicePosition.coords.longitude = position.coords.longitude; 
     locator.devicePosition.timeStamp = position.timestamp; 
    }; 

    var onError = function(error) { 
     console.log("[ERROR]: "+error); 
    }; 

    navigator.geolocation.watchPosition(onSuccess,onError); 
}, 

Und in meinem app.js, werde ich die Position an:

displayResult: function(data){ 
     app.display("output message : "); 
     app.display(data); 
}, 

connectSuccess: function() { 
    console.log("in connectSuccess"); 
    app.display("Connected to: " + app.macAddress); 
    connectButton.innerHTML = "Disconnect"; 
    locator.getTagLocation('00176883',app.displayResult); 
    setTimeout(function() { 
     locator.unsubscribeTagLocation(app.displayResult); 
    }, 30000); 
}, 

Aus meiner Sicht was ich habe ich s hat die ursprüngliche Funktion in meinen Locator eingepackt. Also, in einem Zeitraum von 30 Jahren sollte es meine Position so schnell wie möglich aktualisieren. Aber es wird nicht meine Position um wahrscheinlich 5 bis 6 Sekunden, manchmal sogar mehr als 10 Sekunden aktualisieren. Ich habe die Problem-Tracker in ihrem Repo nicht gefunden, also stelle ich meine Frage hier.

Antwort

0

Standardeinstellung ist nicht gut, verwenden Sie das nicht.

Was ich zu ändern tat, ist die optionalen Parameter angegeben:

navigator.geolocation.watchPosition(onSuccess,onError, {maximumAge: 300, timeout:1000, enableHighAccuracy: true}); 

diese Änderung vorgenommen, die Ausgabe Art und Weise mehr als Instant-Standardeinstellungen.

Da diese Werte fest codiert sind, hängt es wirklich von Ihrem Hardwarezustand ab. Wenn Sie möchten, dass diese watchPosition auf Ihren Geräten perfekt funktioniert, würde ich vorschlagen, dass Sie etwas maschinelles Lernen dazu machen.

Verwandte Themen