查看网络地理位置API documentation有两种获取位置的方法 - getCurrentPosition
可以快速阅读位置,watchPosition
可以监控位置的变化。
我正在寻找的是一种尽可能快地获得非常准确的位置读数的方法。我认为理想的做法是在getCurrentPosition
调用时使用精度阈值 - 当达到阈值或超出超时时(将尽可能准确地得到结果),将调用成功处理程序。
这还不存在,对吗?据推测,通过将watchPosition
方法包装在超时或达到阈值后停止检查来实现它是相当简单的。如果没有人知道内置方法来执行此操作,我将使用此方法(并打算发布代码)...
答案 0 :(得分: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();
答案 1 :(得分:2)
根据我为Taxi开发基于J2ME地理位置的应用程序的经验,GPS芯片需要进行一些初始化以获得准确的位置读取。首选方法是使用类似于watchPosition()的方法,这将使GPS芯片保持热点以提供准确的位置读取。
我认为你的方法在理论上是合理的,但它需要在真实设备上进行测试,因为GPS芯片在各种设备上的性能各不相同。
希望这会有所帮助。