0

ユーザーの現在の位置座標が必要なアプリケーションを作成しています。Cordova Geolocation API を使用し、Intel XDK 環境で開発しています。

一部の携帯電話 (Samsung S3 および S4 など) では、API が場所を取得できず、代わりにタイムアウト エラーが返されます。ただし、電話を再起動した後に機能する場合があります。

プロジェクトにとって場所が重要であるため、安定したソリューションが必要です。これが私の現在のコードです:

navigator.geolocation.getCurrentPosition(geolocationSuccess,
                                         geolocationError,
                                         {maximumAge:0,timeout: 7000, enableHighAccuracy: true});

getCurrentPositionさまざまなパラメーター (maximumAge、タイムアウトなどを変更) で呼び出してみましたが、何も機能していないようです。

この問題を解決するためにできることはありますか? ユーザーの場所を取得できる他のプラグインはおそらくありますか? または、携帯電話のネイティブ機能を使用して場所を取得することはできますか?

4

2 に答える 2

0

getCurrentPosition()デバイスの位置を 1 回要求します。これがアプリの起動直後に呼び出されると、GPS ハードウェアが位置修正を取得する前にタイムアウト (7000 ミリ秒/7 秒はそれほど長くありません - 私は 30000 まで上げます) が発生する可能性があります。

watchPosition()代わりに、OS が位置情報の更新を受信するたびに成功関数を呼び出すウォッチャーをセットアップするために使用することをお勧めします。1 つの位置だけが必要な場合は、許容できる精度の位置を取得したら、ウォッチャーをクリアできます。

例えば:

var minAccuracyInMetres = 50;

var positionWatcher = navigator.geolocation.watchPosition(
  geolocationSuccess,
  geolocationError,
  {maximumAge:0, timeout: 30000, enableHighAccuracy: true});

function geolocationSuccess(position){
  // Reject if accuracy is not sufficient
  if(position.coords.accuracy > minAccuracyInMetres){
      return;        
  }

  // Only single position required so clear watcher
  navigator.geolocation.clearWatch(positionWatcher);

  // Do something with the user's location...

}
于 2015-03-20T14:45:18.643 に答える