web-dev-qa-db-ja.com

HTML5のGeoLocationは正確にどのように機能しますか?

ブラウザは自分のIPアドレスと近くのワイヤレスネットワークの詳細を共有して現在地を特定しますが、近くのWi-Fiネットワークについてどのような情報を知っていますか?

たとえば、私が住んでいる場所にはパブリックワイヤレスネットワークがなく、自宅からは5つのプライベートネットワークを見ることができますが、私の場所は20メートル以内に決定されます。近くにオープンネットワークが存在しない場合、Googleはどのように現在地を特定しますか?私が考えることができる唯一の方法は、Googleがすべてのワイヤレスネットワークの場所をストリートビュー用にマップするときにマップしたということです。

オンラインで検索しましたが、特定の詳細が見つかりません。

81
Dan

FirefoxからGoogleに送信されるデータは、すべての可視アクセスポイント、パブリックまたはプライベート用です。検出された各アクセスポイントについて、次のデータをhttps://www.google.com/loc/json

  "mac_address": "01-23-45-67-89-ab",
  "signal_strength": 8,
  "age": 0,
  "SSID": "MyAccessPoint"

どこで

  • mac_addressは、WiFiノードのMACアドレスです。
  • signal_strengthは、dBmで測定された現在の信号強度です。
  • ageは、WiFiノードが検出されてからのミリ秒数です。
  • SSIDは、WiFiノードの名前または [〜#〜] essid [〜#〜] です。

リクエストをジオコーディングするために使用されたジオリファレンスされたWiFiデータは、 GoogleがStreetViewで写真を撮っているときに収集された でした。

ただし、これが、Googleのジオロケーションサービスを使用してFirefoxでHTML5ジオロケーションAPIを実装する方法であることに注意することが重要です。 これは仕様ではなく実装です。デバイスにGPSが組み込まれている場合は、HTML5実装がGPSを直接クエリすることが望ましいでしょう。ジオロケーションサービスを使用するよりも。

Firefoxでさえ、この機能をWindowsとLinuxで別々に実装しています。 Windows上の現在のFirefoxを使用して、表示されているすべてのWiFiノードの詳細がGoogleに送信されます。 Linux上の現在のFirefoxを使用すると、アクセスポイントデータが libiw に依存するため、現在接続されているWiFiノードの詳細のみが送信されます。

別の回答者が指摘したように、Safariは Skyhook Wireless のサービスを使用しており、Googleの位置情報サービスとほぼ同じことを行います。

68
fmark

データは Skyhook Wireless(Wikipedia) によって収集され、パブリックとプライベートのWi-Fiポイントを区別せず、すべてのWi-Fiポイントを記録します。 Googleストリートビューバンがアクセスポイントの位置データも記録したとしても、私は驚かないでしょう。

6
ceejayoz