mrkeck Sharing the Love

27Aug/160

Ionic 2 Geolocation.watchPosition Parameter 2 is not a function

Was getting this error "'watchPosition' on 'Geolocation': The callback provided as parameter 2 is not a function."
Turns out is a bug in "/node_modules/ionic-native/dist/plugins/geolocation.js"
Should have 3 params, was missing the 2nd parameter in "var watchId = navigator.geolocation.watchPosition(cb, options);"
So I added a function called cbe and put it in the 2nd param. (see below)

Geolocation.watchPosition = function (options) {
        return new Observable_1.Observable(function (observer) {
            var cb = function (data) { return observer.next(data); };
            var cbe = function (data) { return "err"; };
            var watchId = navigator.geolocation.watchPosition(cb, cbe, options);
            return function () { return navigator.geolocation.clearWatch(watchId); };
        });
    };

Extra backstory, in case it helps.
This line below threw no errors

this.watch = Geolocation.watchPosition().subscribe((position) => {...

But if you wanted to have options, like enableHighAccuracy: true, it would fail

this.watch = Geolocation.watchPosition({enableHighAccuracy: true}).subscribe((position) => {

In "/node_modules/ionic-native/dist/plugins/geolocation.d.ts" it tells it to use the default options "GeolocationOptions" if none are provided. But if you provide them is when it was running into the bug