navigator.geolocation的可用性问题:如何知道是否要求用户提供位置?

时间:2011-10-28 19:49:59

标签: html html5 geolocation

HTML的navigator.geolocation是否有一个事件处理程序,用于“当前询问用户是否将共享其位置”?

我想显示一些文字,指示用户分享他们的位置当且仅当他们实际上被要求分享他们的位置时。

目前我有这个代码,但它已经坏了。

第一次看起来很流畅,但第二次(当浏览器知道这是一个受信任的网站时,因此不会要求用户分享他们的位置),当网页加载时,“共享您的位置”会快速闪烁,然后消失在地图后面。

    // map.js
    function gpsSuccess() { 
        // We have a location - although we don't know whether this is 
        // because the user has already agreed to share with this domain,
        // or whether they have just this second been asked. 
        $('#sharelocation').hide();
        // load map, etc
    }
    if (navigator.geolocation) {
        watchId = navigator.geolocation.watchPosition(gpsSuccess, gpsFail);
    }   

    // map.html
    <div id="sharelocation">Share your location</div>
    <div id="map" class="hidden"></div>

如果且仅当实际上要求用户分享他们的位置时,是否有任何建议可以顺利地向用户提供页面正文中的一些说明

2 个答案:

答案 0 :(得分:0)

除非执行失败回调,否则我会考虑不显示“共享位置”消息。

function gpsFail() {
  $('#sharelocation').show();
}

您可以在sharelocation块中添加一条消息,说明如何启用位置共享,您将对信息执行的操作等。

答案 1 :(得分:0)

听起来你可能只是因为getCurrentPosition和你的回调之间的短暂延迟而出现时间问题。如果你把节目延迟一秒左右怎么办? (我不知道特定于jquery的方法是什么)保留对任务的引用,所以在gpsSuccess中你可以用它调用clearTimeout。