このコード:
navigator.geolocation.getCurrentPosition(
function(position) {
alert(position.coords.latitude, position.coords.longitude);
},
function(error){
alert(error.message);
}, {
enableHighAccuracy: true
,timeout : 5000
}
);
https://jsfiddle.net/FcRpM/ Googleで動作しますChrome=私のラップトップで動作しますが、モバイルHTC one S(Android 4.1、GPSオフ、モバイル経由の位置情報)ネットワークおよびwifi対応)、WiFi経由でインターネットに接続されています。
その他Androidアプリは私を正しく見つけます。
これを試すことができます。私のデバイスで動作するようです(Samsung Galaxy Nexus実行中Chrome 27.0.1453.90 Wi-Fi(データ接続なし、GPSなし)))
_navigator.geolocation.getCurrentPosition( function(position) { alert("Lat: " + position.coords.latitude + "\nLon: " + position.coords.longitude); }, function(error){ alert(error.message); }, { enableHighAccuracy: true ,timeout : 5000 } );
_
問題は、アラートは(元の形式で)文字列のみを受け取るが、2つのdoubleを渡すことです。たとえば、アラートボックスをalert('Hey', 'Hello');
に変更すると、出力はHey
のみになります。 _,
_を_+
_に変更すると、連結文字列HeyHello
が得られます。方程式が最初に実行されてから表示されるため、alert
内で_+
_記号を使用することはできません。
これが明確になることを願っています。
THERE IS A回避策:watchPosition呼び出しに、そしてwatchIDをクリアする前に5秒間待機してこれをラップします。以下のコード。
var options = { enableHighAccuracy: true, maximumAge: 100, timeout: 60000 };
if( navigator.geolocation) {
var watchID = navigator.geolocation.watchPosition( gotPos, gotErr, options );
var timeout = setTimeout( function() { navigator.geolocation.clearWatch( watchID ); }, 5000 );
} else {
gotErr();
}
現時点では「オプション」の値やタイムアウト遅延をいじっていませんが、上記のコードは、試したすべてのプラットフォームで正確な位置情報を返します。
多数のモバイルデバイスとJavascript Geolocationのテストを終了しました。問題が自分のコードにないことを確認するために、Googleのサンプルコードを使用しました。
Chrome for Android 4.4はGPSのみの位置情報サービスでは動作しないようです。また、2.3ストックブラウザでも動作しません。両方とも「高精度」-ワイヤレスおよび3G/4Gネットワークの使用が必要です。
面白いことに、Firefox for Androidは問題なくGPSのみで動作します。ストックAndroidブラウザ(Chrome + Mobile Safari)のみが失敗しますGPSのみの位置設定で。
ギャングの残りの部分-Lumia WP8とGPS、WindowsとLinux(両方ともADSL)は、あらゆる場所の設定で完全に機能しました。
さて、昨日この問題に遭遇しました。問題は、Geolocation APIがHTTPSでのみ使用できることでした。 http://localhost
ただし、他のデバイスの場合は、安全な接続が必要です。
それが役に立てば幸い!
Error3の解決策を何時間も探し求めた後、私は自分の電話を再起動することしかできず、ジオロケーションは通常どおりに動作を開始します。残念...
すべてのシミュレータで機能していましたが、Androidデバイスでは機能していませんでした
私のために働いたのは
navigator.geolocation.getCurrentPosition(
(position) => {
console.log(position);
},
(error) => console.log(new Date(), error),
{ enableHighAccuracy: false, timeout: 5000},
);
3つの引数の代わりに2つの手段のみを使用したことを意味します
{enableHighAccuracy:false、タイムアウト:5000}