0

モバイルウェブアプリケーションでは、デバイスの位置移動をエミュレートしたいと思います。 Chromeのデベロッパーコンソール(https://developers.google.com/web/tools/chrome-devtools/device-mode/device-input-and-sensorsを参照)の[センサー]タブを使用して1つの場所を上書きすることはできますが、その場所を連続的に上書きしたいと考えています。ChromeでGPS位置を連続的にエミュレートする

Chrome(または他のデスクトップブラウザ)でこれを達成する可能性はありますか?私は(GPXやKMLファイルから)を記録したGPSトラックを再生することを可能にするAndroidのエミュレータと同様のソリューションを探しています

は: enter image description here

(参照:https://developer.android.com/guide/topics/location/strategies.html#MockData)を

答えて

1

デベロッパーツールは何の機能のを持っていませんこれは、getCurrentPosition()を使用している場合、スニペットの関数をオーバーライドすることでかなり再作成できます。

watchPosition()(おそらくそうです)を使用している場合、このワークフローは機能しません。これは、基本的に、ブラウザが座標を更新したときに起動されるリスナーだと思います。ブラウザの座標を更新する方法はありません。

しかし、私はワークフローをb/cの下に記録します。これは他の人にとっては有用かもしれません。

  1. snippetにスクリプトを保存します。
  2. Override navigator.geolocation.getCurrentPosition()をターゲット座標に置き換えます。だから、

、あなたは(どちらかのスニペット内、または単にフェッチ/ XHRを使ってスニペットからJSONをフェッチ)JSONでの座標とタイムスタンプを格納することができ、その後、指定された時間に座標を更新するsetTimeout()を使用しています。

var history = [ 
    { 
    time: 1000, 
    coords: ... 
    }, 
    { 
    time: 3000, 
    coords: ... 
    } 
]; 

for (var i = 0; i < history.length; i++) { 
    setTimeout(function() { 
    navigator.geolocation.getCurrentPosition = function(success, failure) { 
     success({ 
     coords: history[i].coords, 
     timestamp: Date.now() 
     }); 
    }, history[i].time); 
} 
+0

maps.google.comがいくつかのgpsポジションのタブで開かれている場合にこのスニペットを試しました。残念ながら、地図上の位置マーカーは、手動でページをリロードしたときにのみ更新されます(1回)。 これは、google-mapsが(getCurrentPosition()の代わりに) 'watchPosition()'を使って場所を更新し続けるためだと思いますか? 上記のように、ブラウザの位置を更新する方法は実際にはないようです:( あなたのワークフローを共有していただきありがとうございます。 – user2350644

関連する問題