Geolocation 检测是否已允许W3地理定位

Geolocation 检测是否已允许W3地理定位,geolocation,geocoding,ip-geolocation,Geolocation,Geocoding,Ip Geolocation,我在我的网站上有一个谷歌地图,当用户点击“获取当前位置”按钮时,我使用W3地理位置来检测用户的位置。然后,它将弹出,并在浏览器窗口顶部显示允许/拒绝信息栏 我不想提示所有访问者进行地理定位访问,但我想记住用户是否已经允许地理定位,如果已经允许,则运行地理定位 根据我的研究,这是不可能的,但我希望以前有人遇到过这种情况。我能想到的唯一方法就是设置一个cookie 谢谢 这并不完全是你想要的,但我认为它会有所帮助 根据,您可以尝试从浏览器中获取任何缓存值(无需用户确认),或者在未找到缓存值的情况下回

我在我的网站上有一个谷歌地图,当用户点击“获取当前位置”按钮时,我使用W3地理位置来检测用户的位置。然后,它将弹出,并在浏览器窗口顶部显示允许/拒绝信息栏

我不想提示所有访问者进行地理定位访问,但我想记住用户是否已经允许地理定位,如果已经允许,则运行地理定位

根据我的研究,这是不可能的,但我希望以前有人遇到过这种情况。我能想到的唯一方法就是设置一个cookie

谢谢

这并不完全是你想要的,但我认为它会有所帮助

根据,您可以尝试从浏览器中获取任何缓存值(无需用户确认),或者在未找到缓存值的情况下回退到自定义方法

假设用户已经同意提供地理位置,它将被缓存。来自同一W3C草案的示例:

// Request a position. We only accept cached positions, no matter what 
// their age is. If the user agent does not have a cached position at
// all, it will immediately invoke the error callback.
navigator.geolocation.getCurrentPosition(successCallback,
                                         errorCallback,
                                         {maximumAge:Infinity, timeout:0});
这并不完全是你想要的,但我认为这会有所帮助

根据,您可以尝试从浏览器中获取任何缓存值(无需用户确认),或者在未找到缓存值的情况下回退到自定义方法

假设用户已经同意提供地理位置,它将被缓存。来自同一W3C草案的示例:

// Request a position. We only accept cached positions, no matter what 
// their age is. If the user agent does not have a cached position at
// all, it will immediately invoke the error callback.
navigator.geolocation.getCurrentPosition(successCallback,
                                         errorCallback,
                                         {maximumAge:Infinity, timeout:0});

并没有API调用来知道用户是否允许访问该位置。仅显示提示的getCurrentPosition或watchPosition。因此,设置cookies或以某种方式存储用户选择似乎是唯一的方法。谷歌浏览器不会再问用户是否允许检测他的位置一次。我没有足够的声誉来写评论。这个问题只出现在谷歌chrome上,因为他们删除了chrome,但在其他浏览器上却没有。我找到的唯一解决方案是使用cookies,但问题是用户可以进入浏览器设置并禁用本地化,但他们无法知道这一点,而且用户可以更改位置,而您不会知道。没有API调用来知道用户是否允许访问位置。仅显示提示的getCurrentPosition或watchPosition。因此,设置cookies或以某种方式存储用户选择似乎是唯一的方法。谷歌浏览器不会再问用户是否允许检测他的位置一次。我没有足够的声誉来写评论。这个问题只出现在谷歌chrome上,因为他们删除了chrome,但在其他浏览器上却没有。我找到的唯一解决方案是使用cookies,但问题是用户可以进入浏览器设置并禁用本地化,但他们无法知道这一点,而且用户可以更改位置,而您不会知道。