2016-07-06 14 views
0

Wenn in meinem Ionic 2-Projekt den folgenden Code ausführen:Ionic 2 Uhr Ortsfehler

let options ={ 
    maximumAge: 3000, 
    timeout: 5000, 
    enableHighAccuracy: true 
} 


let geoWatch = Geolocation.watchPosition(options); 
geoWatch.subscribe((data) => { 
    alert("watch"); 

}) 

Im erhalte eine Fehlermeldung sagen: Typeerror: Fehler 'watchPosition' auf 'Geolokalisierung' auszuführen: Der Rückruf zur Verfügung gestellt als Parameter 2 ist keine Funktion.

Ich nehme an, das hat etwas mit der nicht-ionischen nativen Syntax der wathchposition -Funktion zu tun, die succes und error functions als Parameter erwartet.

Wer weiß, wie man das repariert?

Antwort

0

TypeError: Failed to execute 'watchPosition' on 'Geolocation': The callback provided as parameter 2 is not a function.

Du hast Recht, sind die Parameter falsch:

id = navigator.geolocation.watchPosition(success, error, options) 

So eine Sache, die Sie könnten versuchen, ist, indem Sie diese:

let geoWatch = Geolocation.watchPosition(options, subscribeToPosition, showError); 

// Success callback 
private subscribeToPosition(positionObj): void { 
    this.data = positionObj; 
    console.log(positionObj); 
} 

// Error callback 
private showError(errorObj): void { 
    // Handle the error. 
    console.log(errorObj); 
} 

======== ==============================

EDIT:

Ich habe zwar über die navigator.Geolocation API, aber in diesem (super) Beitrag Josh verwendet die Geolocation Cordova Plugin bis Ionic Native (sorry, mein schlechtes).

Wie ich in the documentation sehen:

This API is based on the W3C Geolocation API Specification, and only executes on devices that don't already provide an implementation. 

Also ich denke, Sie sollten überprüfen, ob Sie in einer Web-App sind (von this.platform.is('core') tun), und wenn Sie sind, dann würden Sie die vorherige hinzufügen müssen sintax (mit den Rückrufen). Aber wenn das false ist, dann weißt du, dass deine App auf einem mobilen Gerät ausgeführt wird, und du kannst das ionic-native sintax wie in deinem Code verwenden. Ich habe Angst, dass Sie dies in einem echten Gerät testen müssen, nur um sicher zu gehen.

+0

true, aber ich möchte die Typoskript-Syntax, die ich derzeit verwende. Ich stieß auf eine Reihe von Beispielen, die den gleichen Code wie ich verwenden, aber die nicht den gleichen Fehler zu haben scheinen – vrijdrogenaam

+0

Aber Aufruf einer Methode durch Übergabe Callbacks (die in Typoskript sintax definiert sind) ist auch Typoskript. Könnten Sie bitte den Link dieser Codebeispiele hinzufügen, damit wir sie uns ansehen können? Es muss etwas geben, was uns fehlt ... – sebaferreras

+0

hier gehts! http://www.joshmorony.com/adding-background-geolocation-to-an-ionic-2-application/ – vrijdrogenaam

0

Aktualisierung auf Ionic-Native 1.3.20 löste das Problem für mich