Chrome navigator.geolocation.getCurrentPosition()

2020-02-05 00:47发布

问题:

For some reason suddenly when calling navigator.geolocation.getCurrentPosition() I get this error:

Network location provider at 'https://www.googleapis.com/' : Returned error code 403.

It used to work perfectly yesterday! Could there be anything with their servers??

回答1:

It appears it is back up now. But before I realized it was working, I used another way to get location data as recommended by another user on reddit.com

var latLong;
$.getJSON("http://ipinfo.io", function(ipinfo){
    console.log("Found location ["+ipinfo.loc+"] by ipinfo.io");
    latLong = ipinfo.loc.split(",");
});

Source: https://www.reddit.com/r/webdev/comments/3j8ipj/anyone_else_had_issues_with_the_html5_geolocation/



回答2:

It's not the HTTPS thing, even google's own examples fail, see https://developers.google.com/maps/documentation/javascript/examples/map-geolocation

I opened a thread on reddit and to find out more and got linked here: https://www.reddit.com/r/webdev/comments/3j8ipj/anyone_else_had_issues_with_the_html5_geolocation/

I've had people all over the world report the same issue.



回答3:

This happens for me too on idoco.github.io/map-chat

I suspect that this is related the the changes google planed for Deprecating Powerful Features on Insecure Origins it seems that some changes were done in the last few days in this chromium Issue 520765: Deprecation and removal of powerful features on insecure origins

Can you test your site over https to confirm that?

In the meanwhile I found this api usage as a workaround on this repo:

  $.getJSON("http://ipinfo.io", function(doc){
    var latlong = doc.loc.split(",")
    setUserLocation(parseFloat(latlong[0]), parseFloat(latlong[1]));
    getLocation(parseFloat(latlong[0]), parseFloat(latlong[1])).then(function(res){
      userLocationName = res
    })
    initialiseEventBus();
    map.panTo(userLocation);

  }, function(err) {
    setUserLocation(Math.random()*50, Math.random()*60);
    userLocationName = "unknown.na"
    initialiseEventBus();
    map.panTo(userLocation);
  })


回答4:

I had the same issue, you have to check your developer dashboard and make sure that your API key has no usage restrictions or warnings.