次のデバイスで HTML5 Geolocation を使用しようとしています:
- HTC One X
- アンドロイド 4.1.1
- WebKit/534.30(ブラウザ内蔵WebKit版)
HTML5 Geolocation API を使用する組み込みブラウザと最新バージョンの Chrome アプリ Web サイトでは、私を見つけることができません。ただし、Firefox アプリは数秒以内に私の位置を特定します。
これは問題です。PhoneGap などのマルチプラットフォーム アプリ開発プラットフォームは、アプリ全体のコンテナーとして WebView (= 組み込みブラウザー) を使用するためです。さらに、通常のユーザーは、Web アプリができるはずのことを実行できない場合、別のブラウザーを試すことはありません。
私の最初の考えは、私を見つけるのにもっと時間が必要だったので、タイムアウトを 5 分に設定しました (投稿の下部を参照)。しかし、それは私の場所を見つけることなく、そのタイムアウトに達するだけです. タイムアウトを設定しないと、コールバック関数は呼び出されません (1 時間ほど待ちました)。
2 番目に考えたのは、携帯電話またはブラウザの設定のどこかで、位置情報を要求する Web サイトがブロックされているのではないかということでした。これはそうではないことが判明しました。
したがって、私の次の考えは、ブラウザが W3C 標準に従っていないという意味でプログラミングの問題である可能性があるため、API の動作が異なる可能性があるということです。その場合、このデバイスまたはこれらのブラウザーで場所を取得するにはどうすればよいですか?
Google のような適切にコーディングされた Web サイトでさえ、これらのブラウザーではその API を使用して私の位置情報を取得できないため、プログラミングの問題ではない可能性があります。そうでない場合は、どの StackExchange Web サイトを参照すればよいですか? (たとえば、デバイスの問題の場合は?)
私が使用している API ( MDN ):
navigator.geolocation.getCurrentPosition(success, error, options);
// Where success and error are callbacks and the options object may contain:
// enableHighAccuracy - boolean, speaks for itself
// timeout - maximum amount of milliseconds before one of the callbacks is called
// maximumAge - maximum age in milliseconds of cached location