我在啥时候可以判断用户是不是选择不分享他们的位置?

Posted

技术标签:

【中文标题】我在啥时候可以判断用户是不是选择不分享他们的位置?【英文标题】:At what point can I tell if a user has chosen to not share their location?我在什么时候可以判断用户是否选择不分享他们的位置? 【发布时间】:2011-12-11 13:10:47 【问题描述】:

我正在尝试使用 phpjavascript 发送 lat 和 lon 以及网络摄像头图像和其他一些数据——别问,这只是我开始的一个小项目,希望能学到一些东西。为了使 lat 和 lon 可用,我必须在检索到 lat 和 lon 后调用网络摄像头功能。这是我正在使用的 javascript(地理位置部分来自 Lynda.com。我将其与 JpegCam 结合使用)。我添加了 lat 和 lon div 来保存这些值。然后我调用网络摄像头函数now_go(),它使用getElementById() 获取纬度和经度。只要用户分享他们的位置,这就会很好。如果他们不这样做,则不会调用 now_go() 函数。但是,如果我更早地调用它,即使用户决定分享他们的位置,lat 和 lon 也不可用。那么在游戏的哪个阶段,我可以判断用户是否选择不分享?

 <script type="text/javascript">
    var t = new bwTable();
    var geo;

    function getGeoLocation() 
        try 
            if( !! navigator.geolocation ) return navigator.geolocation;
            else return undefined;
         catch(e) 
            return undefined;
        
    

    function show_coords(position) 
        var lat = position.coords.latitude;
        var lon = position.coords.longitude;
        element('lat').innerhtml = lat;
        element('lon').innerHTML = lon;
        t.updateRow(0, [ lat.toString(), lon.toString() ] );
        dispResults();
        now_go();
    

    function dispResults() 
        element('results').innerHTML = t.getTableHTML();

    

    function init() 
        if((geo = getGeoLocation())) 
            statusMessage('Using HTML5 Geolocation')
            t.setHeader( [ 'Latitude', 'Longitude' ] );
            t.addRow( [ '&nbsp;', '&nbsp;' ] );
         else 
            statusMessage('HTML5 Geolocation is not supported.')
        
        geo.getCurrentPosition(show_coords);
    

    window.onload = function() 
        init();
    
</script>

这是网络摄像头脚本的一部分,我把它变成了一个函数,这样我就可以在获取 lat 和 lon 后调用它:

 <script language="JavaScript">
        function now_go()
            var lat = null;
            var lon = null;
     if ($("#lat").length > 0)          
      var lat = document.getElementById('lat').innerHTML;
         

          if ($("#lon").length > 0)          
      var lon = document.getElementById('lon').innerHTML;
          
            webcam.set_api_url( 'webcam/test/' + lat + '/' + lon);
    webcam.set_quality( 90 ); // JPEG quality (1 - 100)
    webcam.set_shutter_sound( true, '/mark/js/webcam/shutter.mp3' );

           

</script>

我确定这段代码还有其他问题,但这就是它现在的样子。早上五点。我认为这种情况会持续一段时间。

任何意见或建议都会很棒。

谢谢, 标记

【问题讨论】:

我不确定你为什么使用双精度而不是 !! navigator.geolocation 来测试这种情况。如果您正在测试它的存在,则不是if(!navigator.geolocation) alert('Your browser does not support Geolocation.') 对您的问题没有直接帮助,但不应该在 if((geo = getGeoLocation())) 位内使用 geo 变量吗?如果分配失败,在 else 块之后使用它会失败。 见这里:***.com/questions/7463367/… @RussellDias 实际上,他使用它的方式是,整个 if/else 块可以替换为 return navigator.geolocation,因为如果未定义,他将返回 undefined.. 【参考方案1】:

见this link。 navigator.geolocation.getCurrentPosition() 方法还有第二个参数可以让你传入另一​​个函数:

navigator.geolocation.getCurrentPosition(show_coords, function(error) 
    switch(error.code)  
      
        case error.PERMISSION_DENIED: alert("user did not share geolocation data");  
        break;  

        case error.POSITION_UNAVAILABLE: alert("could not detect current position");  
        break;  

        case error.TIMEOUT: alert("retrieving position timedout");  
        break;  

        default: alert("unknown error");  
        break;  
      
);

【讨论】:

谢谢,这正是我想要的!

以上是关于我在啥时候可以判断用户是不是选择不分享他们的位置?的主要内容,如果未能解决你的问题,请参考以下文章

检查用户是不是允许应用使用他们的位置

如何判断是不是丢掉用户请求

keil5注册机在啥位置

Oracle的日志文件存储在啥位置

j2ee开发中,需要使用线程、线程池吗?在啥时候用线程?啥时候用线程池?

安卓应用的代码和ui等数据一般保存在啥文件夹里?怎么打开?