HTML5地理定位第二次提示

HTML5地理定位第二次提示,html,geolocation,Html,Geolocation,在用户拒绝位置共享后,是否有办法在某个触发器上再次提示用户进行地理定位 navigator.geolocation.getCurrentPosition 触发一次,连续调用不会产生相同的结果。在任何地方都找不到答案/请查看此代码段和此答案: 再看看这个链接 在地理定位API中?不 如果用户单击“拒绝权限”,它的意思就是“不,不要再打扰我了…” 不过,用户可以通过删除位置共享设置来完成此操作,然后当然会再次弹出提示 或者用户可以在浏览器允许的情况下更改设置,但是,例如,Chrome将这些设置作

在用户拒绝位置共享后,是否有办法在某个触发器上再次提示用户进行地理定位

navigator.geolocation.getCurrentPosition 

触发一次,连续调用不会产生相同的结果。在任何地方都找不到答案/

请查看此代码段和此答案:

再看看这个链接

在地理定位API中?不 如果用户单击“拒绝权限”,它的意思就是“不,不要再打扰我了…”

不过,用户可以通过删除位置共享设置来完成此操作,然后当然会再次弹出提示

或者用户可以在浏览器允许的情况下更改设置,但是,例如,Chrome将这些设置作为例外进行管理(无论用户是否允许),因此用户必须分别删除这些设置。反正是例外

现在怎么办? 您唯一的选择是捕获错误并使用一些外部API通过IP查找用户的位置。你可以自己编程,当然也有@Venkat建议的现有解决方案

但要知道IP地理定位是一个棘手的问题——有时它有地址号的准确性,有时只是状态的准确性

此示例展示了如何处理地理位置错误的一个很好的示例:

var options = {
  enableHighAccuracy: true,
  timeout: 5000,
  maximumAge: 0
};

function success(pos) {
  var crd = pos.coords;

  console.log('Your current position is:');
  console.log('Latitude : ' + crd.latitude);
  console.log('Longitude: ' + crd.longitude);
  console.log('More or less ' + crd.accuracy + ' meters.');
};

function error(err) {
  /*
  CALL EXTERNAL API HERE
  */
  console.warn('ERROR(' + err.code + '): ' + err.message);
};

navigator.geolocation.getCurrentPosition(success, error, options);

最好的选择是设置地理定位子域,并将其加载到iframe中

geo-0.domain.com
geo-1.domain.com
geo-2.domain.com
geo-3.domain.com
geo-4.domain.com
geo-N.domain.com

这将允许您在每个浏览器上进行无限制的尝试,您只需在自己的重试逻辑中编写程序。

这是否真的解决了此处的问题(即允许地理位置查找的提示在被拒绝一次后不会再次出现)…?我对此表示怀疑。虽然我想解决这个问题的唯一办法是刷新页面(如果有选择的话),以便能够再次提示。
geo-0.domain.com
geo-1.domain.com
geo-2.domain.com
geo-3.domain.com
geo-4.domain.com
geo-N.domain.com