6

PhoneGap Build で cordova 2.9.0 を使用しています。ユーザーが特別な場所から特別な時間にチェックインできるアプリを作成しました。私の問題は、さまざまなデバイスにアプリをインストールすると、常にタイムアウトになることがあることです (これは Android デバイスでのみ発生します)。デバイスを再起動すると、地理位置情報が機能し、gps データを取得します。この問題を解決する別の方法があるかどうか知りたいです。deviceReady 関数の地理位置情報のコードは次のとおりです。

var geo = cordova.require('cordova/plugin/geolocation');
var optionsGeo = {maximumAge: 0, timeout: 30000, enableHighAccuracy: false};
var watchID = geo.watchPosition(onSuccessGeo, errorGeo, optionsGeo);

function onSuccessGeo(position) {
  lat = (position.coords.latitude).toFixed(6);
  lon = (position.coords.longitude).toFixed(6);
  accuracy = (position.coords.accuracy).toFixed(0); 
  console.log("Lat " + lat + " Lon " + lon + " & " + accuracy + "m");
}

function errorGeo(error) {
  console.log("Geo-Fehler! Code: " + error.code + " Nachricht: " + error.message);
}

さまざまなタイムアウト値と HighAccuracy を有効にして試しましたが、何も役に立ちません。ありがとう。

4

2 に答える 2

4

主にSamsung Androidデバイスで、この問題にも直面していました。私が見つけたのは、次のことです。

  1. デバイスに SIM カードがインストールされていない場合、GPS 座標はありません (これは一部のデバイスにのみ適用されます)。

  2. <uses-permission android:name="android.permission.ACCESS_FINE_LOCATION" />Android マニフェストで設定していることを確認してください。

  3. 設定する必要がありenableHighAccuracy:trueます。以下の設定を参照してください。

    var options = {maximumAge: 0, timeout: 10000, enableHighAccuracy:true}; navigator.geolocation.getCurrentPosition(onSuccess, onError, options);

enableHighAccuracyは、アプリケーションが可能な限り最良の結果を受け取りたいというヒントを提供します。デフォルトでは、デバイスはネットワークベースの方法を使用して位置を取得しようとします。このプロパティを true に設定すると、衛星測位などのより正確な方法を使用するようにフレームワークに指示されます。

場合によっては、開発者はgeolocation.watchPositionを使用して、より正確な GPS 結果を取得します。それも試してみませんか?

それが役立つことを願っています!

于 2013-11-11T10:42:32.043 に答える
1

この質問が古いことは知っていますが、今日、Cordova 3.5.0 と geolocation プラグイン (org.apache.cordova.geolocation 0.3.8) を使用して同じ問題に遭遇しました。

デバイス(Android)でGPS「HighAccuracy」モードを有効にすることで解決しました。(設定 -> 位置情報へのアクセス -> モード)。
アプリユーザーは、アプリを使用するためにこのオプションを有効にする必要があるというヒントを受け取ります...

于 2014-06-28T10:32:21.500 に答える