1

私はユーザーの位置を正常にキャプチャするために以下を使用しています(モバイルブラウザ):

<script>
if ( navigator.geolocation ) {
navigator.geolocation.getCurrentPosition(handlePosition);
}
function handlePosition(pos) {
    //this passes lat/long to additional code
 }
</script>

これは機能しますが、多くの場合、ブラウザは位置データをキャッシュしているように見えます。このジオロケーションコードを呼び出すページには、ユーザーの位置に関連する情報が表示されるため、ユーザーは移動(位置の変更)でき、ページは再読み込みされますが、以前の位置データが使用されます(誤ったデータが表示されます)。ページが新しい位置データを使用するために、ページを1回または2回更新する必要がある場合があります。

スクリプトが実行されるたびにコードに「最新の」位置データを取得して使用させる方法を知っている人はいますか?

FWIW、iOS Safari(6.1)で問題が発生しています。Androidではまだテストできていません。

読んでくれてありがとう。

4

2 に答える 2

3

編集:Oleksiyが彼の回答に書いているように、GeolocationAPIはこれをサポートするようになりました。{maximumAge: 0}の3番目のオプションパラメータとして追加できますgetCurrentPosition仕様に記載されているように、PositionOptionsにはタイムアウトと高精度のオプションもあります。

ナビゲーターの呼び出しは次のように変更されます。

navigator.geolocation.getCurrentPosition(
  handlePosition, 
  (error)=>{}, 
  {maximumAge:0}
);

いいえ、できません。例のコード以外に、ブラウザの地理的位置を制御することはできません。html5 geo location apiは非常に制限されており、それは苦痛です。また、ドメインの許可がすでに付与されているかどうかを尋ねることができるかどうかという質問もありましたが、答えもノーでした。

問題は、APIがブラウザー自体に実装されており、これらの種類の関数のエンドポイントではないことです。

あなたができることは、以前の場所を保存するためにjsで配列を作成し、その配列に対してビューテストを更新する前に、古い場所を取得したかどうかを確認することです。

于 2013-02-11T14:46:57.513 に答える
3

あなたは今この能力を持っています。getCurrentPositionは、成功失敗オプションの3つのパラメーターを取ります

これを試して:

<script>
if ( navigator.geolocation ) {
navigator.geolocation.getCurrentPosition(handlePosition, (error)=>{}, {maximumAge:0});
}
function handlePosition(pos) {
    //this passes lat/long to additional code
 }
</script>
于 2018-08-26T17:31:54.827 に答える