如何在 Web 应用程序中请求用户对 html5 地理位置 api 的权限?
Posted
技术标签:
【中文标题】如何在 Web 应用程序中请求用户对 html5 地理位置 api 的权限?【英文标题】:How to request user permission for html5 geolocation api in web apps? 【发布时间】:2017-02-04 17:32:03 【问题描述】:我有这段代码可以使用 html5 地理位置
this.getCurrentLocation = function(callback)
if (navigator.geolocation)
navigator.geolocation.getCurrentPosition(function (pos)
callback(
'lat' : pos.coords.latitude,
'lng' : pos.coords.longitude
);
, function (error)
switch(error.code)
case error.PERMISSION_DENIED:
alert("Could not get your location. User denied the request for Geolocation.");
break;
case error.POSITION_UNAVAILABLE:
alert("Could not get your location. Location information is unavailable.");
break;
case error.TIMEOUT:
alert("Could not get your location. The request to get user location timed out.");
break;
case error.UNKNOWN_ERROR:
alert("Could not get your location. An unknown error occurred.");
break;
default:
alert("Could not get your location. An unknown error occurred.");
callback(null);
,
maximumAge: 500000,
enableHighAccuracy:true,
timeout: 6000
);
;
我正在 android 手机上的 chrome 浏览器上对其进行测试。但它马上就说用户拒绝了许可。它甚至不问我是否要允许它。我怎样才能得到它来请求许可。我在网站设置中,也应该请求该位置的许可。
如果我在桌面上尝试,它可以工作。
有谁知道怎么回事?
谢谢
【问题讨论】:
【参考方案1】:这不是通过 HTML 或 javascript 完成的(这是一件好事)。必须通过用户的应用设置来完成。否则,开发人员只能将接受使用位置服务的代码编写到他们的应用程序中,绕过用户的意愿。
【讨论】:
但在我的应用设置中,在谷歌浏览器上,它说要先询问。问题是网站甚至没有询问。 关闭该设置,然后再次打开以重置它。一旦应用询问您并得到回应,它就不会再询问。 我试过了,但它仍然进入用户拒绝权限。 它必须是设备/用户代理设置。这无法通过代码确定。在另一台设备上试试。 我把它改成了HTTPS
。除非其安全连接,否则 Android 上的 Chrome 无法用于地理定位。以上是关于如何在 Web 应用程序中请求用户对 html5 地理位置 api 的权限?的主要内容,如果未能解决你的问题,请参考以下文章
如何使用多个发送(请求)实现 HTML5 WEB-Socket