从JavaScript高精度检索地理定位的最佳模式是什么?

时间:2013-07-02 18:31:57

标签: javascript w3c-geolocation

我一直在使用JavaScript Geolocation API(主要是在iOS 6和Android Jellybean设备中),尽管通过了:

{
  enableHighAccuracy: true, 
  maximumAge: 0
}

作为PositionOptions,模式似乎是在第一个响应中我得到快速低精度响应(location.coords.accuracy值高达16,130)并且在第二个或第三个响应上我得到高精度响应(location.coords.accuracy值低至31)。现在我正在实现一个setTimeout调用(延迟3秒)来查询GPS两次,我忽略了第一个响应。但我想知道是否有其他人对更好的实现有任何指示。这是我的代码(3秒超时)(和demo,你需要打开控制台)

var check = function() {
  if ("geolocation" in navigator) {
    console.log('looking');
    navigator.geolocation.getCurrentPosition(function(location) {
      console.log('Ignoring the following data:');
      console.log({
        lat: location.coords.latitude,
        lng: location.coords.longitude,
        accuracy: location.coords.accuracy});
      setTimeout(function() {
        navigator.geolocation.getCurrentPosition(function(location) {
          console.log('On my system I am firing a Lucene Spatial search with the following data:');
          console.log({
            lat: location.coords.latitude,
            lng: location.coords.longitude,
            accuracy: location.coords.accuracy});
        }, function() {
          console.log('navigator error occurred on second call... weird');
        }, {
          enableHighAccuracy: true, 
          maximumAge: 0
        });
      }, 3000);
    }, function() {
      console.log('navigator error occurred on first call.');
    }, {
      enableHighAccuracy: true, 
      maximumAge: 0
    });
  } else {
    console.log('geolocation not available');
  }
}

1 个答案:

答案 0 :(得分:0)

如果您的应用需要如此精确的地理定位,那么您可以确定准确属性的关键阈值是什么,并设置一个监听器,该监听器可以观察到准确度的变化,只有在响应足够精确时才会做出反应。