2016-11-02 9 views
2

私はアンドロイドで緯度と経度を表示するためにコードブラ、ジオロケーションプラグインを使用しています。これと同じ質問がたくさんありますので、私はその解決策を読んで試しましたが、問題を解決できませんでした。以下のコードはブラウザ上で完全に動作します。Cordovaジオロケーションプラグインがアンドロイドで動作しません

エミュレータ(Androidスタジオ)で間違った結果(37.42、-122.08)を返す "navigator.geolocation.watchPosition"という3つのメソッドを試しましたが、デバイスには何も返しません。

「enableHighAccuracy」と「false」の両方を設定した「navigator.geolocation.getCurrentPosition」も試してみましたが、timeOutエラーが発生しました。

私はdevicereadyを削除すると、私はtimeOut、3つの方法すべてから間違った結果を得ることはありません。

(function (window) { 
 
    document.addEventListener("deviceready", onDeviceReady, false); 
 
    function onDeviceReady() { 
 
     
 
    var minAccuracyInMetres = 50; 
 
    var positionWatcher; 
 

 
    positionWatcher = navigator.geolocation.watchPosition(
 
     geolocationSuccess2, 
 
     geolocationError2, 
 
     { maximumAge: 0, timeout: 100000, enableHighAccuracy: true }); 
 

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

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

 
     alert('Latitude: ' + position.coords.latitude + '\n' + 
 
       'Longitude: ' + position.coords.longitude + '\n' + 
 
       'Altitude: ' + position.coords.altitude + '\n' + 
 
       'Accuracy: ' + position.coords.accuracy + '\n' + 
 
       'Altitude Accuracy: ' + position.coords.altitudeAccuracy + '\n' + 
 
       'Heading: ' + position.coords.heading + '\n' + 
 
       'Speed: ' + position.coords.speed + '\n' + 
 
       'Timestamp: ' + position.timestamp + '\n'); 
 
    }; 
 

 
    function geolocationError2(error) { 
 
     console.warn("Error while retrieving current position. " + 
 
      "Error code: " + error.code + ",Message: " + error.message); 
 
    } 
 

 
    //2 
 

 
    var onSuccess1 = function (position) { 
 
     alert('Latitude: ' + position.coords.latitude + '\n' + 
 
       'Longitude: ' + position.coords.longitude + '\n' + 
 
       'Altitude: ' + position.coords.altitude + '\n' + 
 
       'Accuracy: ' + position.coords.accuracy + '\n' + 
 
       'Altitude Accuracy: ' + position.coords.altitudeAccuracy + '\n' + 
 
       'Heading: ' + position.coords.heading + '\n' + 
 
       'Speed: ' + position.coords.speed + '\n' + 
 
       'Timestamp: ' + position.timestamp + '\n'); 
 
    }; 
 

 
    function onError1(error) { 
 
     alert('code: ' + error.code + '\n' + 
 
       'message: ' + error.message + '\n' + 'highaccuracy: true'); 
 
    } 
 
    var options1 = { maximumAge: 0, timeout: 300000, enableHighAccuracy: true }; 
 
    navigator.geolocation.getCurrentPosition(onSuccess1, onError1, options1); 
 
    //3 
 
    var onSuccess = function (position) { 
 
     alert('Latitude: ' + position.coords.latitude + '\n' + 
 
       'Longitude: ' + position.coords.longitude + '\n') 
 
    }; 
 

 
    function onError(error) { 
 
     alert('code: ' + error.code + '\n' + 
 
       'message: ' + error.message + '\n' + ' high accuracy:false'); 
 
    } 
 

 
    navigator.geolocation.getCurrentPosition(onSuccess, onError, { enableHighAccuracy: false, timeout: 300 * 1000, maximumAge: 0 }); 
 
} 
 
})(window);

私はstackoverflowの中に別の質問からwatchPositionの一部を取得します。 私はcordovaバージョンを使用しています:6.4.0。 プラグインを削除して再試行しましたが、動作しませんでした。 私がテストしているデバイスは、lenovoタブレットです。 ありがとうございました。

更新:私のジオロケーションバージョンは:2.4.0重要ですか?

+0

GPSを有効にしてよろしいですか? –

+0

はい、GPSとWi-Fiが有効です。アプリを実行しようとしている電話機の – Niloofar

+0

? –

答えて

0

2日間の苦労の末、私は場所の設定で「高精度」をオンにしました。アプリは今すぐ動作!

関連する問題