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

时间:2012-07-03 08:21:28

标签: php javascript jquery ajax geolocation

我正在开发一个基于浏览器的地理定位项目,专门针对移动浏览器。我不会深入了解细节,但整体而言,项目使用地理定位跨越项目的许多页面和部分。看起来问题是,尽管在任何给定的浏览器上总是“接受”和“允许”,但当用户重新加载页面时,几乎每次都会提示他们实现位置认证。

对我来说很奇怪,我已经去了地理位置的网站,它真的记得我允许它,即使我在网站上的时间并不总是。所以,我想知道在项目中长期存储这种认证需要做些什么特别的事情吗?

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

所以任何人都能给出的任何建议,或者对如何处理这个问题的见解都将不胜感激。

1 个答案:

答案 0 :(得分:1)

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中。