0

私は 2 つの js ファイルを持っています。1 つは位置データをオブジェクトに格納するためのもので、もう 1 つはクリック イベントなどのイベント ハンドラです。

これは機能します:

var Geology = {
    coords: {},
    error: '',
    setPosition: function (position) {
        Geology.coords = position.coords;
        // DEBUG
        for (var prop in Geology.coords)
            console.log(prop + ': ' + Geology.coords[prop]);
    },
    setError: function (error) {
        Geology.error = error;
    }
};

if (navigator.geolocation) {
    navigator.geolocation.getCurrentPosition(Geology.setPosition,Geology.setError,{timeout:10000});
}

しかし、必要に応じてクリックまたはタイマーで位置データを更新できるようにしたいと考えています。私がそれをしようとするときはいつでも、最初のように変数を地質学に割り当てません。

このような:

jQuery(document).ready(function($){
    $('.toggle').click(function(){
        //- get geo location if available
        if (typeof Geology === 'object') {
            if (navigator.geolocation) {
                navigator.geolocation.getCurrentPosition(Geology.setPosition,Geology.setError,{timeout:10000});
            }
        }
    });
});

コンソールにエラーは表示されませんが、失敗するだけでコールバックが実行されません。ただし、条件を通過するかどうかをテストしたので、getCurrentPosition メソッドを実行します。

4

1 に答える 1

1

パラメータを設定する必要があると思いますmaximum_age。そうしないと、結果が永久にキャッシュされます。

navigator.geolocation.getCurrentPosition( 
      geo_success, 
      geo_error, 
      { maximumAge:60000 } // set to 1min (in ms)
);

他にも 2 つのパラメータがあります:enableHighAccuracytimeout

詳細: https://developer.mozilla.org/en-US/docs/Using_geolocation

編集:私はちょうどこれを見つけました、それはおそらくあなたの問題に関連していますnavigator.geolocation.getCurrentPosition

于 2013-01-15T04:13:53.780 に答える