等待getCurrentPosition达到准确度阈值

Ian*_*ger 5 javascript iphone google-maps geolocation iphone-web-app

查看Web GeoLocation API文档,有两种获取位置的方法 - getCurrentPosition快速读取位置并watchPosition监视位置的变化.

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

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

Thi*_*iff 3

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

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

HTML:

<div id="result"></div>
Run Code Online (Sandbox Code Playgroud)

脚本:

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();
Run Code Online (Sandbox Code Playgroud)