保持浏览器会话持久性的地理位置


Geolocation Keeping the Browser Session Persistent

我正在开发一个基于浏览器的地理定位项目,该项目专门针对移动浏览器。我不会深入细节,但总体而言,该项目在项目的许多页面和部分使用地理位置。问题似乎是,尽管在任何给定的浏览器上始终点击"接受"和"允许",但当用户重新加载页面时,几乎每次都会提示他们重新允许位置身份验证。

这对我来说很奇怪,我去过带有地理位置的网站,它真的记得我允许它,即使在我在网站上而不是总是如此。因此,我想知道是否需要做某种特殊的事情才能在我的项目中长时间存储此身份验证?

目前,我正在通过谷歌地图API使用基于javascript的地理位置,并且更新的浏览器支持非基于IP的位置。我的项目由用户自行决定跟踪他们在哪里,以便与他们相关的其他人可以看到他们在哪里,他们去过哪里,或者他们计划去哪里(如果他们输入的话)。还有更多,但这是基础。从 UX 的角度来看,每次浏览器重新加载时都必须提示我的用户以重新验证位置,这很烦人。

因此,任何人能够提供的任何建议,或有关如何处理此问题的见解,将不胜感激。

Cookie会话

检测到用户的地理位置后,您应该将其存储在 Cookie 中。来自服务器的每个请求都应查看是否有设置的cookie(包含用户的位置)并对其采取行动。

过度简化的代码:

// get user location (via javascript)
navigator.geolocation.getCurrentPosition(function(position) 
{
  initialLocation = new google.maps.LatLng(position.coords.latitude,position.coords.longitude);
}
// ajax the server with the user location
$.post('ajax/set_user_location.php', initialLocation);

然后在服务器上,您获取initialLocation并将其保存在cookie中。