捕获 html5 地理定位事件

Posted

技术标签:

【中文标题】捕获 html5 地理定位事件【英文标题】:Catch html5 geolocation events 【发布时间】:2015-07-09 12:55:05 【问题描述】:

有没有办法捕捉 html5 地理位置事件?

现在我正在使用 geolocator.js

我的问题是:

当消息弹出时,如果我想允许 html5 位置,如果我接受它需要 html5 位置,如果我得到 ipLocation。

但我想监听这些点击,所以如果用户在 10 秒内没有点击,我可以设置超时,它会自动获取 ip 位置。

有什么方法可以获取“接受”和“拒绝”的事件?这是我的代码 sn-p

if (navigator.geolocation) 
        navigator.geolocation.getCurrentPosition(geoSuccess, geoError, html5Options);
     else  // not supported
        fallback(new Error('geolocation is not supported.'));
    

编辑:我在 iMac 上使用 Chrome

编辑2:

var html5Options =  enableHighAccuracy: true,timeout: 10000, maximumAge: 0 ;

编辑 3:使用 kravitz 的解决方案

if (navigator.geolocation) 
        waitTooLong=setTimeout(geoError, 15000);
        navigator.geolocation.getCurrentPosition(geoSuccess, geoError, html5Options);
     else  // not supported
        fallback(new Error('geolocation is not supported.'));
    

function geoSuccess(position) 
        clearTimeout(waitTooLong);
       //doing my locationstuff


function geoError(error) 
        //doing my locationstuff
        clearTimeout(waitTooLong);
        fallback(error);
 

【问题讨论】:

那么你想知道用户什么时候点击了他们“接受”地理位置,如果他们没有点击“接受”你就照做吗? 不,如果他们使用接受我使用 html5 位置。否则我使用 IPLocation。 【参考方案1】:
var geoError = function()
  //get location failed so get manually by IP here
;

if (navigator.geolocation) 
        navigator.geolocation.getCurrentPosition(geoSuccess, geoError, html5Options);
     else  // not supported
        fallback(new Error('geolocation is not supported.'));
    

以上应该可以,但如果你想确定:

var timeOut = setTimeout(geoError, 10000);
var geoSuccess =  function()
   clearTimeout(timeOut);
;

【讨论】:

这就是我现在正在做的事情,但他在超时后不使用geoError ..通常他会在10秒后使用ipLocation .. 但我想没有办法跟踪点击/也不用javascript关闭窗口 您是否尝试在 geoError 函数的开头放置一个 alert() 以查看它是否到达那里?尤其是从 setTimeout 调用无法访问 geoError 函数会很奇怪。 确保 geoError 和 geoSuccess 在使用它们或 setTimeout 之前/之上定义 是的,我尝试在 geoError 中使用 console.log,但什么都不做时它不会弹出。如果我拒绝它,它会完美运行。

以上是关于捕获 html5 地理定位事件的主要内容,如果未能解决你的问题,请参考以下文章

如何使用HTML5地理位置定位功能

HTML5 Geolocation(地理定位)简介

HTML5 Geolocation(地理定位)简介

带有地理围栏的 html5 地理定位 API

哪些网络浏览器支持通过 HTML5 进行地理定位?

使用 html5 地理定位 api 创建地理围栏