私が反応しているネイティブプロジェクトでnavigator.geolocation.watchPositionを使用して、移動中に地図上にパスをペイントしています。私は戻り周波数がこの機能のためにかなり低いことに気づいた。私は、iOSエミュレータとgpsエミュレータの「フリーウェイドライブ」モードを使用してテストしたとき、少なくとも周波数だと教えてくれました。今度は "市街地走行"でテストしたところ、位置の戻り頻度はある時間間隔に依存するのではなく、距離に依存していることがわかりました。関数は100メートルごとに1回ずつ位置を返していますポジションがそれほど変わるのにどれくらいの時間がかかりましたか?navigator.geolocation.watchPositionはそれぞれ100mを返す
なぜこのようなのですか?これは期待される行動ですか?私はそれがiOSエミュレータやコードと関係があるのかどうか分かりませんが、私は実際にその位置がより正確であることを望んでいます。できるだけ頻繁に復帰したいと思っています。
componentDidMount() {
const { region } = this.state;
navigator.geolocation.getCurrentPosition(
(position) => {
this.setState({position});
},
(error) => alert(JSON.stringify(error)),
{enableHighAccuracy: true, timeout: 20000, maximumAge: 1000}
);
this.watchID = navigator.geolocation.watchPosition((lastPosition) => {
var { distanceTotal, record } = this.state;
this.setState({lastPosition});
if(record) {
var newLatLng = {latitude:lastPosition.coords.latitude, longitude: lastPosition.coords.longitude};
this.setState({ track: this.state.track.concat([newLatLng]) });
this.setState({ distanceTotal: (distanceTotal + this.calcDistance(newLatLng)) });
this.setState({ prevLatLng: newLatLng });
}
},
(error) => alert(JSON.stringify(error)),
{enableHighAccuracy: true, timeout: 20000, maximumAge: 0});
}
。あなたはこの問題の解決策を見つけましたか?ありがとう。 – Larney