如何过期或重置地理位置

时间:2013-02-19 11:35:28

标签: javascript html5 geolocation location

当用户点击我的网站时,我会检查我是否在PHP中设置了位置会话。如果没有与用户位置设置的会话,我将它们重定向到www.domain.net/location。在此页面上,有许多选项供用户选择位置。如果浏览器允许,其中一个选项是使用浏览器来设置它。以下代码非常有效。

我遇到的问题是,一旦用户允许浏览器共享该位置,这似乎永远设置。在用户浏览时,他们可能决定更改其位置,然后单击按钮再次转到www.domain.net/location页面。没有任何弹出,它会自动获取浏览器位置并重定向它们。页面上还有其他位置选项,包括可点击的地图,我真的需要能够重置,过期,删除,强制某些内容,以便浏览器再次询问用户是否想要使用浏览器设置位置或允许用户使用其他选项之一。

我唯一能想到的是将下面的实际Javascript移到另一个页面上,在www.domain.net/location页面上有另一个按钮,上面写着“使用我的精确位置”,然后链接到下面的JS。

有没有人知道重置这个或其他什么的另一种方式?

<script type="text/javascript" charset="utf-8">


    function findLocation()
    {
      var options = {timeout: 60000};
      navigator.geolocation.getCurrentPosition(foundLocation, noLocation, options);
    }

    function foundLocation(position)
    {
      var lat = position.coords.latitude;
      var lng = position.coords.longitude;

      //alert('Found location: ' + lat + ', ' + lng);
      window.location = "http://www.domain.net/?lat=" + lat + "&lng=" + lng;
    }

    function noLocation()
    {
      alert('Could not find location');
      window.location = "http://www.domain.net/location";
    }

    findLocation();


  </script>

4 个答案:

答案 0 :(得分:2)

这是一种每浏览器设置,而不是您可以在脚本端控制的内容。您可以做的是提供一个链接such as this one,解释如何更新给定浏览器的特定网站的地理位置设置。

似乎您可以解决您的具体问题,而不是链接到/location,而是链接到/location?update或类似的东西。基本上,转到位置页面,但添加一些阻止自动重定向的内容,以便用户可以对其位置做出不同的决定。

答案 1 :(得分:1)

我承认只使用了Javascript Location API几次,但我的理解是浏览器存储了用户偏好(这个假设似乎得到了加强here)。

引用页面表明,用户的偏好存储在每个站点(域)的基础上,而不是每个URL。如果不是这种情况,那么将随机字符串值添加到URL应该可以解决问题。编辑:我已经检查过并且每个域都定义了豁免:

这会使您建议将代码推迟到另一个页面 - 或者将其绑定到不在页面上运行的事件,这是我能想到的最佳解决方案。

答案 2 :(得分:1)

如果用户授予您网站使用其位置的权限,则只需存储&#34;允许&#34;以及浏览器安全设置中的网站网址。它不存储实际位置。这是通过代码完成的。 如果您想使用新的位置,只需使用javascript即可。

navigator.geolocation.getCurrentPosition(function(position) {
  do_something(position.coords.latitude, position.coords.longitude);
});

有关获取地理位置的详情,请参阅此处:https://developer.mozilla.org/en-US/docs/WebAPI/Using_geolocation

如果您将位置存储在Cookie中并重新使用该位置,只需清除Cookie并重置,或根本不使用Cookie。

要查看Chrome浏览器的地理位置设置存储,请打开Chrome选项&#34;三重栏&#34; &GT;设置&gt;高级...&gt;在隐私下,点击内容设置&gt;在“位置”下,单击“管理例外”。

答案 3 :(得分:0)

我决定在URL的末尾添加?change-location并使用PHP检查这一点,然后在页面上隐藏Javascript。这不是一个很好的修复,但它看起来像是每个浏览器设置,而不是你可以使用脚本重置的东西。看起来,一旦用户说“记住我的偏好”,那就知道它会做什么,直到他们在浏览器中进行设置和更改。