2016-10-17 40 views
0

"リアルタイム"で私の現在の位置をGoogleマップに表示しているアプリケーションを作成したいと思います。ここでgetLocationとsetInterval

は、関連するコードです:

function updatePosition() { 
     navigator.geolocation.getCurrentPosition(function (position) { 
      var myLatLng = {lat: position.coords.latitude, lng: position.coords.longitude}; 
      marker.setPosition(myLatLng); 
      $('#log').append('<p>new position - lat: ' + position.coords.latitude + ', lng: ' + position.coords.longitude + ' </p>'); 
     }); 
    } 
    setInterval(updatePosition, 2000); 

は、どのように私はそれを言うことができます...それは動作します。しかし、私が期待した通りではありません。代わりに2秒、私の位置をリフレッシュし、ログに約5 - 30秒を書き込む。

Googleマップでこの位置を更新することは可能ですか?そうでない場合は、リーフレットやOpenLayersのような別のマップを使用する必要がありますか?

+0

これは助けになるかもしれませんが、[doc](https:// developerに報告されているようにタイムアウトを設定しようとするかもしれません。 mozilla.org/en-US/docs/Web/API/Geolocation/getCurrentPosition) – gaetanoM

+0

誰かが私を嫌い:)))1時間で私の2番目の質問、1つのdownvotesとクローズフラグ。 – vaso123

+0

おそらくあなたは[watchPosition](https://developer.mozilla.org/en-US/docs/Web/API/Geolocation/watchPosition)を探していますか? – geocodezip

答えて

0

次のようなコードを実行する場合は、この

function updatePosition() { 
    navigator.geolocation.getCurrentPosition(function (position) { 
     var myLatLng = {lat: position.coords.latitude, lng: position.coords.longitude}; 
     console.log(myLatLng); 
     setTimeout(updatePosition, 0); 
    }); 
} 
updatePosition(); 

あなたはgetCurrentPositionは、有限の時間を要することがわかります - それを実行している、それはそう... ZEROタイムアウトでだ、私の場合、5秒であなたのような2秒ごとに更新する予定はありません

0

あなたが遭遇している遅延はおそらく、デバイスからの位置取得の遅延によるものです。 さらに、getCurrentPosition関数の2番目のハンドラとしてエラーをチェックしてみてください。

関連する問題