私は現在、firefox OS を使用してデバイスの gps と通信する方法を探しているので、gps リアルタイムほど正確ではない w3c geolocation api ではなく、正確な位置を取得できます。ありがとう!
3 に答える
簡単な答え:「デバイスのGPS」に直接アクセスすることはできません。すでに知っているGeolocationAPIしかありません。
長い答え:それに関する私の経験はまったく悪くありません。したがって、名前を付けると、「正確な位置測位」が得られない可能性は2つだけだと思います。
- 正確な位置を取得するために適切なオプションを使用していない可能性があります。この場合、より良い結果を得るためにオプションを少し調整することができます。
- 基盤となるソフトウェアが、精度の低い計測器/推定(Wi-Fi位置推定など)の代わりにGPSを使用できるようになるまで待っていない可能性があります。
- 両方の組み合わせにすることができます=P
最初のケースでは、次のように、を使用しているかどうかを確認できますenableHighAccuracy
。
navigator.geolocation.watchPosition(
successCallback,
errorCallback,
{ enableHighAccuracy: true }
);
これにより、標準が示すように、ブラウザにより良い結果が求められます。これはより多くのバッテリーを使用する可能性があり、とにかく利用できない可能性があることに注意してください。これももっと時間がかかるかもしれませんが、これは私の他の観察に関連しています。
2番目のケースでは、timeout
その値が小さすぎる可能性があり、高すぎる可能性のある値と組み合わされてmaximumAge
いる可能性があります。
maximumAge
高くて小さい場合はtimeout
、新しいポジションを取得するのに十分な時間がなく、古いポジションを受け入れるため、古いポジションになります。
両方が小さい場合はTIMEOUT
、ポジションがないため、多くのエラー(値は3)が発生し始めます。
最適なポジションを得るには、3つのオプションすべての間で適切なバランスを見つける必要があります。そして、あなたは時々我慢しなければなりません。
3つのオプションすべてを試して、発生するエラーを確認してください。彼らはあなたの問題が正確で正確な座標を取得することについて多くを教えてくれます。
位置オブジェクトには、何が起こっているのかを分析するのに役立つ可能性のあるいくつかの属性があります。
- 属性は、
position.timestamp
その位置オブジェクトが何歳であるかを示します。これが古い場合は、オプションを微調整する必要があります - この
position.coords.accuracy
属性は、緯度/経度座標の精度レベルを示します。これが大きすぎる場合(メートル単位)、オプションを微調整する必要があります
GPSがうまく機能するはずの場所(たとえば、屋外、きれいなフィールド)で永遠に待っていて、不正確な結果が得られ続ける場合は、とにかくこれ以上うまくいくことはできません。あなたのソフトウェア+ハードウェア=(
現在のところ、Firefox OS は GPS 測位のみをサポートしています (最新の A-GPS が追加されています)。その結果、ほとんどの場合、GPS モジュールが現在地のロックを取得するまで、少なくとも 1 分から数分待たなければならず、ロックを取得するには空をよく見る必要があります。
つまり、ロックが取得された後、呼び出し自体で適切な設定を使用することにより (enableHighAccuracy
フラグを に設定するなどtrue
)、GPS は他のデバイスと同じくらい正確な位置を提供する必要があります。
現在、セルベースおよび Wi-Fi ベースの地理位置情報は、OS の現在のバージョン (1.0.1 または 1.1.0) では利用できませんが、パイプラインにあります。
Geolocation API Firefox OSまたはGoogleマップを使用できます(どこで入手したかは覚えていません)