我可以从我使用的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 ');
}
答案 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并再次将其关闭,则会出现一些错误。