Skip to content

Instantly share code, notes, and snippets.

@varmais
Created October 1, 2015 19:43
Show Gist options
  • Select an option

  • Save varmais/74586ec1854fe288d393 to your computer and use it in GitHub Desktop.

Select an option

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);
});
@kholiavko-roman

Copy link
Copy Markdown

Tnaks, it helps me!

@ye-s

ye-s commented Jun 20, 2017

Copy link
Copy Markdown

Thanks, I have been tinkering similar solution!

ghost commented Oct 1, 2017

Copy link
Copy Markdown

Thank you so much. It helped me a lot.

@OlegPomazkov

Copy link
Copy Markdown

Thanks. realy useful! (For me )) )

@jonathanCNITA

Copy link
Copy Markdown

Thanks bro

@stuartg23

Copy link
Copy Markdown

Thanks, this helps a lot!

@erickvieira

erickvieira commented Apr 30, 2018

Copy link
Copy Markdown

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

trandaison commented May 3, 2018

Copy link
Copy Markdown

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
Copy Markdown

THANK YOU FOR POSTING THAT SOLUTION!

@krobik

krobik commented Mar 5, 2019

Copy link
Copy Markdown

I'm glad I stumbled upon this decision!

@EdTimmer

Copy link
Copy Markdown

Thank you!

@alvarezaaronAI

Copy link
Copy Markdown

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
Copy Markdown

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
Copy Markdown

So elegant, thank you so much :)

@yuki0417

yuki0417 commented Sep 7, 2019

Copy link
Copy Markdown

Thank you! You save my time :}

@danprowse

Copy link
Copy Markdown

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
Copy Markdown

Thank you

@dlik

dlik commented Jan 6, 2021

Copy link
Copy Markdown

Thank you very much!

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