0

Android で実行されている PhoneGap アプリに地理位置情報を実装しようとしています。何らかの理由で、ロケーターは WiFi に接続されている場合にのみ正確な距離を返します (つまり、細かい距離よりも粗い距離を優先します)。私のGPSはもちろん有効です。ある時点で、アプリは GPS を使用しようとしましたが (ロケーターのウィンカーが表示されるのを見ました)、タイムアウトし続けたことに注意してください。デバイスを再起動すると、WiFiのみを使用するように戻りました。添付は私のコードです:

function testGeo(){
        navigator.geolocation.getCurrentPosition(function(position){
            $('#latitude').html('');
            $('#longitude').html('');
            $('#accuracy').html('');
            $('#latitude').html(position.coords.latitude);
            $('#longitude').html(position.coords.longitude);
            $('#accuracy').html(position.coords.accuracy);
            $('#loading-frame-geo').hide();
        }, GeoError, {enableHighAccuracy:true,maximumAge:3000,timeout:10000});  
}

PhoneGap バージョン 2.5.0 を使用しています (他の機能との下位互換性のため)

4

1 に答える 1

0

config.xml で地理位置情報が有効になっていることを確認します。<plugin name="Geolocation" value="org.apache.cordova.GeoBroker"/>

そしてあなたの AndroidManifest.xml で:

<uses-permission android:name="android.permission.ACCESS_COARSE_LOCATION" />
<uses-permission android:name="android.permission.ACCESS_FINE_LOCATION" />
<uses-permission android:name="android.permission.ACCESS_LOCATION_EXTRA_COMMANDS" />

また、タイムアウトを 60000 に増やしてみてください。古いデバイスでは GPS 修正を取得するのに時間がかかる場合があります。

navigator.geolocation.watchPositionの代わりに使用することを検討してくださいnavigator.geolocation.getCurrentPosition。これにより、デバイスが新しい位置を取得するたびに成功関数を呼び出すウォッチャーが追加されます。位置修正がまだ取得されていない場合、エラー コールバックが呼び出されます。

もう 1 つ (私が経験から発見したこと) は、Android が GPS 修正を失い、デバイスが取得するために使用しているハードウェアを通知するために成功関数に渡された Position オブジェクトに何もない場合、Android は静かに Wifi またはセル三角測量にフォールバックすることです。その場所。ただし、精度から推測して、不正確すぎる位置を破棄することはできます。たとえば、次のようになります。

MIN_ACCURACY = 20; //metres

function success(position){
  if(position.coords.accuracy > MIN_ACCURACY){
    console.log("Position rejected because accuracy is less than required "+MIN_ACCURACY+" metres");
    return;
  }
  // else, do some stuff with the position
}

このプラグインを使用して、デバイスで GPS が有効になっているかどうかを確認し、有効になってisGpsEnabled()いない場合は、ユーザーを設定ページに誘導することも検討してください。switchToLocationSettings()

それが役に立てば幸い...

于 2013-10-02T18:20:37.427 に答える