【问题标题】:Wait to reach an accuracy threshold with getCurrentPosition等待使用 getCurrentPosition 达到准确度阈值
【发布时间】:2011-09-10 00:50:31
【问题描述】:

查看网络 GeoLocation API documentation 有两种获取位置的方法 - getCurrentPosition 可以快速读取位置,watchPosition 可以监控位置的变化。

我正在寻找一种方法来尽快获得非常准确的位置读数。我认为理想的做法是在 getCurrentPosition 调用上使用准确度阈值 - 当达到阈值或超过超时时,将调用成功处理程序(结果尽可能准确)。

这还不存在,对吧?据推测,通过包装watchPosition 方法以在超时或达到阈值后停止检查来实现这一点相当简单。如果没有人知道这样做的内置方法,我将使用这种方法(并打算发布代码)......

【问题讨论】:

    标签: javascript iphone google-maps geolocation iphone-web-app


    【解决方案1】:

    根据我为出租车开发基于 J2ME 地理位置的应用程序的经验,GPS 芯片需要进行一些初始化才能获得准确的位置读数。首选的方法是使用类似于 watchPosition() 的方法,这将使 GPS 芯片保持热状态以提供准确的位置读数。

    我认为您的方法在理论上是合理的,但它需要在真实设备上进行测试,因为 GPS 芯片的性能因设备而异。

    希望这会有所帮助。

    【讨论】:

    • 问题:是否有一个功能可以自动(或超时)将位置获取到一定的准确度。答案:不。公平的总结? :)
    【解决方案2】:

    没有内置函数。我发现超时比设定的准确性更好。在 iPhone 上,精度通常不会超过 100 米左右,因此继续检查是否更好是浪费。使用watchPosition() 效果最好,而且它似乎是三角测量,所以在三个读数之后它很少会变得更好。我只是等待五秒钟然后停下来。

    演示:http://jsfiddle.net/ThinkingStiff/3k859/

    HTML:

    <div id="result"></div>
    

    脚本:

    function setGeolocation() {
    
        var geolocation = window.navigator.geolocation.watchPosition( function ( position ) {
    
                document.getElementById( 'result' ).innerHTML += 
                      'lat: ' + position.coords.latitude + ', '
                    + 'lng: ' + position.coords.longitude + ', '
                    + 'accuracy: ' + position.coords.accuracy + '<br />';
    
            },
            function () {
                //error
            },
            {
                maximumAge: 250, 
                enableHighAccuracy: true
            } 
    
        );
    
        window.setTimeout( function () {
    
            window.navigator.geolocation.clearWatch( geolocation ) 
    
        }, 5000 );
    
    };
    
    setGeolocation();
    

    【讨论】:

    • 感谢您展示该功能。这是我打算写的,但 getCurrentPosition 似乎适合我的使用。
    • 我已将此标记为答案,因为它几乎是我最初想要的 - 但我不打算使用它,所以不知道它是否有效!
    猜你喜欢
    • 2021-03-10
    • 1970-01-01
    • 1970-01-01
    • 2023-02-13
    • 1970-01-01
    • 1970-01-01
    • 2019-11-14
    • 2023-04-05
    • 1970-01-01
    相关资源
    最近更新 更多