実際のAndroidデバイス(バージョン5.1)を使用しています
React-native-maps(アプリ内のマップ上の正しいブルーポイントの位置)を使用して位置を特定できます+ Googleマップアプリを使用して自分の位置に移動できます(GPSが機能します)。
私は大きなタイムアウトを使用し、enableHighAccuracyをtrueとfalseに切り替え、オプションを削除します...など。すべてがデータを取得するためのnavigator.geolocationの取得に失敗しました。
ここに私のコードがあります:
_var options = {
enableHighAccuracy: true,
timeout: 5000,
maximumAge: 0
};
function success(pos) {
var crd = pos.coords;
console.log('Your current position is:');
console.log(`Latitude : ${crd.latitude}`);
console.log(`Longitude: ${crd.longitude}`);
console.log(`More or less ${crd.accuracy} meters.`);
};
function error(err) {
console.warn(`ERROR(${err.code}): ${err.message}`);
};
navigator.geolocation.getCurrentPosition(success, error, options);
_
私は取得しています:ERROR(3): Location request timed out
2つのこと。
1)座標がキャッシュされていない場合、これは実際には高精度の応答の高タイムアウトではありません。2)一部のデバイスには、高精度設定に問題があります。
タイムアウトとして30000ミリ秒を入れて、有効な設定が見つかるまで高精度を削除してください。
編集:私が覚えていた長いバグを見つけましたReact Native: https://github.com/facebook/react-native/issues/7495
だから、これを試してください:
1)maximumAgeプロパティを削除します2)それが機能しない場合は、3番目のパラメーターを削除し、ネイティブモジュールのデフォルト値を使用します。つまり、オプションオブジェクトを送信しないでください。うまくいくはずです。
MaximumAgeを削除すると、ここで問題が解決しました! 2019年に誰かがまだこの問題を抱えている場合に備えて
場所へのアクセスをリクエストするには、アプリのAndroidManifest.xmlに次の行を追加する必要があります:<uses-permission Android:name="Android.permission.ACCESS_FINE_LOCATION" />
。
Android with API> = 2の場合、確認するために追加の手順が必要です。PermissionsAndroid
APIを使用してACCESS_FINE_LOCATION
権限を要求する必要があります。
PermissionsAndroid.request(
PermissionsAndroid.PERMISSIONS.ACCESS_FINE_LOCATION,
{
title: "Location Accessing Permission",
message: "App needs access to your location"
}
);
そしてその後、navigator.geolocation.getCurrentPosition(success, error, options);
を実行します
私はこれを使用し、うまく動作します:{enableHighAccuracy:false、timeout:50000}
async watchPosition() {
console.log('watchPosition');
await navigator.geolocation.getCurrentPosition(
(position) => {
console.log('Position -> ',position);
},
(error) => console.log(error)
{enableHighAccuracy: false, timeout: 50000}
);
}