2013-08-27 4 views
6

を取得します。特別な場所で特別な時間にチェックインできるアプリを書いています。 私の問題は、(これが唯一のAndroidデバイス上で発生した)私は、さまざまなデバイス上のデアプリをインストールするときに、私は時々、常にTIMOUTを得るということです。デバイスを再起動すると、ジオロケーションが機能し、gps-dataが取得されます。今私は、この問題を解決する別の方法があるかどうかを知りたいと思います。 deviceReady関数のジオロケーションのための私のコードは次のとおりです。PhoneGapのジオロケーションは、常に私が構築するのPhoneGapとコルドバ2.9.0を使用する特殊なデバイス上でタイムアウト

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); 
} 

私は別のtimeoutvaluesとして有効に高精度で試してみました - が、何も助けません。おかげさまで

+1

私は同じ問題を抱えていますが、解決しましたか? – Red2678

答えて

4

は、私はまた、主にサムスンのAndroidデバイスで、この問題に直面していました。あなたは、デバイスにインストールされたSIMカードをお持ちでない場合は、何のGPS座標(つまり、いくつかのデバイスにのみ適用です)は存在しません

  1. :私は何を見つけたことはということです。

  2. あなたがAndroidマニフェストで<uses-permission android:name="android.permission.ACCESS_FINE_LOCATION" />セットを持っていることを確認してください。あなたはenableHighAccuracy:trueを設定する必要があります

  3. は私の設定の下に参照してください。

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

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

場合によっては、より正確なgps結果を得るために、開発者はgeolocation.watchPositionを使用します。あなたもそれを試すことができますか?

私はそれが助けてくれることを願っています!

1

私はこの質問は古いです知っているが、私は、ジオロケーションプラグイン(org.apache.cordova.geolocation 0.3.8)でコルドバ3.5.0を使用して、今日、同じ問題に遭遇しました。

Iデバイス(アンドロイド)にGPS「高精度」-modeを可能にすることによってそれを解決しました。 (設定 - >位置情報アクセス - >モード)。
app-userは、このオプションを有効にしてアプリケーションを使用する必要があるというヒントを得ます。

関連する問題