0

私は、JavaScriptを使用して次の呼び出しを行う簡単なWebサイトを作成しました。

navigator.geolocation.getCurrentPosition(show_map、show_map_error);

私はそのウェブサイトをインターネットに載せました。さまざまな場所にあるさまざまなPC(GPSガジェットなし)からWebサイトを開こうとしました。1つは私の家から、もう1つは友達のオフィスから。

ただし、スクリプトが常に位置を取得するとは限りません。何が問題になるでしょうか?

ありがとうございました。

4

1 に答える 1

0

このメソッドは、特に GPS が接続されていない場合、位置を返す保証はありません。

代わりに、キャッシュされた位置を取得してみてください。API仕様から以下を参照してください

// Request a position. We only accept cached positions, no matter what 
// their age is. If the user agent does not have a cached position at
// all, it will immediately invoke the error callback.
navigator.geolocation.getCurrentPosition(successCallback,
                                         errorCallback,
                                         {maximumAge:Infinity, timeout:0});

function successCallback(position) {
  // By setting the 'maximumAge' to Infinity, the position
  // object is guaranteed to be a cached one.
  // By using a 'timeout' of 0 milliseconds, if there is
  // no cached position available at all, the user agent 
  // will immediately invoke the error callback with code
  // TIMEOUT and will not initiate a new position
  // acquisition process.
  if (position.timestamp < freshness_threshold && 
      position.coords.accuracy < accuracy_threshold) {
    // The position is relatively fresh and accurate.
  } else {
    // The position is quite old and/or inaccurate.
  }
}

function errorCallback(error) {
  switch(error.code) {
    case error.TIMEOUT:
      // Quick fallback when no cached position exists at all.
      doFallback();
      // Acquire a new position object.
      navigator.geolocation.getCurrentPosition(successCallback, errorCallback);
      break;
    case ... // treat the other error cases.
  };
}

function doFallback() {
  // No cached position available at all.
  // Fallback to a default position.
}
于 2012-08-28T03:03:54.750 に答える