5

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

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

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

4

2 回答 2

3

没有内置功能。我发现超时比设定的准确性更好。通常在 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();
于 2011-11-09T20:23:03.923 回答
2

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

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

希望这可以帮助。

于 2011-06-19T19:58:49.767 回答