5

JavascriptでgetCurrentPositionメソッドを使用しています。クリックしたときにメソッドgetCurrentPositionの実行を停止するボタンを実装したいと思います。 throw/try/catchブロックで試しましたが、うまく動作していないようです。getCurrentPositionメソッドの実行を停止します。

 

    try { 
     $('#cancel').on("click", function() { 
      $.mobile.loading('hide'); 
      throw "stop"; 
     }); 
     navigator.geolocation.getCurrentPosition(foundLocation, noLocation, {enableHighAccuracy: true, timeout : 30000 }); 
    } 
    catch (er) { alert(er); return false; } 

アイデアはありますか? JSでも可能ですか? 私は考えましたが、getCurrentPositionがブレークするようにJSメソッドでタイムアウトをトリガーすることが可能かどうかはわかりません。

+0

そうレンダリングを止めるべきではないか、W3仕様以外のものは、あなたがそれを一度起動を停止することはできません非同期メソッドことになっています。ボタンをクリックしただけで結果を無視したいのですか?あなたが掲示したコードは働く機会がなく、イベントや非同期の方法はそのようには動作しません。 – mattmanser

+0

ボタンをクリックすると、getCurrentPosition(clearTimeoutと似たもの)の実行を停止します。 – Laila

答えて

10

ソリューション:

方法navigator.geolocation.getCurrentPositionはそうちょうどそのようにそれを止めるにはカウントされません非同期関数です。

代わりにnavigator.geolocation.watchPositionという名前の関数を使用する必要があります。これはgetCurrentPositionと同じ方法で動作しますが、あなたのケースで有用なものはnavigator.geolocation.clearWatchという別の関数です。この関数はwatchPositionを停止するために使用されます。

例:

geoLoc = navigator.geolocation; 
watchID = geoLoc.watchPosition(showLocation, errorHandler, options); 
geoLoc.clearWatch(watchID); 
+0

ありがとう、これは私が必要としていたものです! – Laila

関連する問題