私はアンドロイドで緯度と経度を表示するためにコードブラ、ジオロケーションプラグインを使用しています。これと同じ質問がたくさんありますので、私はその解決策を読んで試しましたが、問題を解決できませんでした。以下のコードはブラウザ上で完全に動作します。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重要ですか?
GPSを有効にしてよろしいですか? –
はい、GPSとWi-Fiが有効です。アプリを実行しようとしている電話機の – Niloofar
? –