Skip to content

Instantly share code, notes, and snippets.

@varmais
Created October 1, 2015 19:43
Show Gist options
  • Save varmais/74586ec1854fe288d393 to your computer and use it in GitHub Desktop.
Save varmais/74586ec1854fe288d393 to your computer and use it in GitHub Desktop.
Geolocation to Promise wrap example
var getPosition = function (options) {
return new Promise(function (resolve, reject) {
navigator.geolocation.getCurrentPosition(resolve, reject, options);
});
}
getPosition()
.then((position) => {
console.log(position);
})
.catch((err) => {
console.error(err.message);
});
@ye-s
Copy link

ye-s commented Jun 20, 2017

Thanks, I have been tinkering similar solution!

@HerbertLim
Copy link

Thank you so much. It helped me a lot.

@OlegPomazkov
Copy link

Thanks. realy useful! (For me )) )

@jonathanCNITA
Copy link

Thanks bro

@stuartg23
Copy link

Thanks, this helps a lot!

@erickvieira
Copy link

erickvieira commented Apr 30, 2018

One question: is this a solution to promise catch empty error in ionic geolocation.getCurrentPosition? I am looking for this in all web, since most than one week, so please tell me that is it :(((

@trandaison
Copy link

trandaison commented May 3, 2018

To check if Geolocation is supported.

getCurrentPosition: function () {
    if (navigator.geolocation) {
      return new Promise(
        (resolve, reject) => navigator.geolocation.getCurrentPosition(resolve, reject)
      )
    } else {
      return new Promise(
        resolve => resolve({})
      )
    }
  }
getCurrentPosition()
  .then(
    position => console.log(positon);
    if (position.coords) {
      position => console.log(positon);
    } else {
      alert('Geolocation is not supported by this browser.');
    }
  ).catch(
    // error => console.log(error);
    // Or
    error => {
      var msg = null;
      switch(error.code) {
        case error.PERMISSION_DENIED:
            msg = "User denied the request for Geolocation.";
            break;
        case error.POSITION_UNAVAILABLE:
            msg = "Location information is unavailable.";
            break;
        case error.TIMEOUT:
            msg = "The request to get user location timed out.";
            break;
        case error.UNKNOWN_ERROR:
            msg = "An unknown error occurred.";
            break;
      }
      alert(msg);
    }
  )

@erickvieira Did you try to catch via error code like above?

@davidhbigelow
Copy link

THANK YOU FOR POSTING THAT SOLUTION!

@krobik
Copy link

krobik commented Mar 5, 2019

I'm glad I stumbled upon this decision!

@EdTimmer
Copy link

Thank you!

@alvarezaaronAI
Copy link

After hours of trying to solve it for my self. This freaking saved my life. I been at it for hours. THANK YOU!!

@JenniferWP
Copy link

Am I the only one who gets an error while trying to access position.coords ? It says Property 'coords' does not exist on type '{}'.

@charmingelle
Copy link

So elegant, thank you so much :)

@yuki0417
Copy link

yuki0417 commented Sep 7, 2019

Thank you! You save my time :}

@danprowse
Copy link

After trying to figure this out for a couple of hours, realised I needed a promise.. this solution worked great! thank you 👍

@thamer-ben-dhafer
Copy link

Thank you

@dlik
Copy link

dlik commented Jan 6, 2021

Thank you very much!

Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment