无法在Chrome 47中获取地理位置

时间:2015-12-07 06:09:17

标签: javascript google-chrome

我可以从我使用的firefox和旧版Chrome(Chrome 45)中获取用户的地理位置。 在Chrome 47中,我无法获得结果。

可能的原因是什么?我的代码有什么问题吗?这是代码。

var cord= '';
if (navigator.geolocation) 
{
    navigator.geolocation.getCurrentPosition(function(position) {
        var lat = position.coords.latitude;
        var lng = position.coords.longitude;

      alert( lat+','+lng);

    }, function(error) {
        alert( 'error');
    });
} 
    else 
{
  alert('else of navigator.geolocation ');

}

Fiddle

1 个答案:

答案 0 :(得分:1)

底层API没有改变,你在这里的代码示例也运行良好。它确实表明它可能在过去被拒绝了。

要在客户端的Chrome中进行一些调试,您可以使用permissions API来查询该页面是否有权访问API - 如果它返回denied,则表示用户已阻止访问。例如。

navigator.permissions.query({name: 'geolocation'}).then(function(e) {
  alert(e.state);
  e.onchange = function() {
    alert(this.state);
  };
});

如果它显示“提示”,则表示用户之前从未接受过该权限,或者他们在前一页加载时解除了提示。另外两个状态是明确授予和拒绝的状态,用户做出了明确的选择。如果您看到这两者中的任何一个,特别是denied,那么您的问题是用户或您之前拒绝了提示。

最后,这是一个警告和单挑。您需要确保在https上运行 - 我们将更改访问地理位置API的要求,以便仅通过https提供。我们预计这一变化将在未来几个月内出现。

如果这一切都失败了,那么可能是Chrome中存在问题。其中一个问题出现在Chrome Dev Tools中,如果您切换Emulate Geolocation并再次将其关闭,则会出现一些错误。