【问题标题】:Capture the first time the geolocation is requested to the user捕获第一次向用户请求地理位置
【发布时间】:2019-08-14 21:25:44
【问题描述】:

我正在构建一项服务,以使用 HTML5 地理位置 API 记录网站访问者的地理位置。问题是我只想记录访问者第一次授予地理定位 API 的权限。 API 提供以下方法来检索位置:

if (navigator.geolocation) {
    navigator.geolocation.getCurrentPosition(saveToDatabase);
} else {
    x.innerHTML = "Geolocation is not supported by this browser.";
}

但是,如果我将位置保存在 saveToDatabase 函数中,我将在每次请求时进行记录,而不是在用户授予权限时进行记录。

我希望我可以保存向用户请求的第一个地理位置。反正我能做到吗?

【问题讨论】:

  • 首先,您需要检查数据库是否已保存位置,如果是,则使用保存的位置。否则,请致电navigator.geolocation.getCurrentPosition(saveToDatabase)
  • 多种方式。你有什么想法吗?你试过什么吗?这也取决于您的系统。如果您的用户在访问之间更改位置怎么办?应用程序是否使用数据库?它支持用户会话吗?在 cookie 或 LocalStorage 中设置标志怎么样?这种形式的问题太宽泛了。
  • 没有会话,因为访问者没有登录。我想将位置与数据库进行比较,如果它已经存在,但坐标每次都会改变。也可以存储一个 cookie 或使用 LocalStorage 可以是一个解决方案,但如果用户清理此信息,我将多次记录他的位置。

标签: javascript html geolocation


【解决方案1】:
 var date = null;

 if (navigator.geolocation) {
   if (date != null) {
       date = Date.now();
   }
   navigator.geolocation.getCurrentPosition(saveToDatabase);
 } else {
   x.innerHTML = "Geolocation is not supported by this browser.";
 }

【讨论】:

  • 如果页面重新加载了怎么办?
  • 您可以将其存储在 cookie 中并检查 cookie 是否存在而不是检查日期是否为空
  • 确实可以。您的回答并没有表明任何类似的内容,也没有任何解释。不是一个好的答案。
  • 您没有在问题中提及正在重新加载的页面
猜你喜欢
  • 1970-01-01
  • 2019-01-21
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多