地理的位置づけ(一)


Geolocationは訪問者の地理的位置づけを実現することができます.もちろん、このような位置づけは、ユーザーがその国にいるか、どの国のどの都市にいるかを判断するのではなく、ユーザーが都市の街にいるか、さらにはユーザーが携帯電話を持ってどこでインターネットを利用しているかを確定し、この場所の座標位置を与えることです.
地理的な位置付けをサポートするブラウザを以下に示します.
IE
Firefox
Chrome
Safari
Opera
Safari iOS
Andriod
最小バージョン
9
3.5
5
3
10.6
3.2
2.1
問題が最も深刻なのは依然としてIEの“お兄さん”で、例えばIE 7、IE 8、ブラウザの上で地理的な位置付けの機能を実現するために、Google Gearsを借りることができて、Google Gearsはただ古いバージョンのブラウザに対する1つの救済措置で、Googleは今そのメンテナンスを放棄します.救済策は、他のブラウザプラグインをインストールするように、訪問者に自分のブラウザにGoogle Gearsをインストールさせることです.訪問者コンピュータにGoogle Gearsがインストールされていない場合は、Chrome Frameを使用するか、訪問者に現在の位置を自分で入力させることもできます.
地理的位置づけの基本原理
ユーザーの位置情報を得るために、ブラウザは位置プロバイダ(location provider)の助けを勝ち取る.例えばFirefoxブラウザはGoogle Location Servicesを使用しています.もちろん、ブラウザが地理的な位置決め機能をサポートしていても、許可しなければ、ブラウザに位置を漏らすことはありません.
ネットワークケーブル(ワイヤレスではない)でインターネットを利用するデスクトップコンピュータにとって、方法は簡単ですが、位置決めが正確ではありません.ユーザーがインターネットを利用すると、彼の情報はツイストワイヤを通じてコンピュータやローカルネットワーク上で伝送されます.このデバイスには唯一のIPアドレス(ローカルエリアネットワーク内のプライベートIPアドレスを使用しないことに注意)があり、このIPでインターネット上で彼を見つけることができます.IPアドレスに対応して、もう一つの現実的な郵便番号があります.
ポジションプロバイダはこの2つの情報を統合します.まず、あなたが接続しているIPアドレスを見つけて、それから、そのIPアドレスを使用するルータの位置を確定します.この情報は間接的なので、デスクトップコンピュータを使用する地理的な位置は正確ではありませんが、結局、あなたの街の位置を特定することができます.
ノートパソコンやモバイルデバイスを使用してワイヤレスインターネットを利用する場合は、位置プロバイダが近くのワイヤレスアクセスポイントを探します.理想的には、ロケーションプロバイダは、周囲のいくつかのアクセスポイントの正確な位置を決定するために、大規模なデータベースをクエリーし、三角測量法を使用してロケーションを算出します.
携帯電話でインターネットを利用する場合、位置プロバイダは同様の三角測量法を採用するが、信号発射塔の位置を使用する.迅速かつ相対的に正確な計算を経て,最終的に得られた位置誤差は約1000メートルであった.ビルが林立する都心では、信号発射塔が比較的多いため、地理的な位置付けの結果もより正確になる.
多くのモバイル機器には専用のGPSコンポーネントが搭載されており、GPSは衛星測位を使用しており、誤差は数メートルしかない.しかし、GPSの速度が遅く、消費電力が多い.また、GPSはビルが林立している地域では使いにくい.高い建物は信号を遮断するからだ.
また、地理的位置付けに使用できる他の技術もあります.ロケーションプロバイダは、RFIDチップ、Bluetoothデバイス、Google Mapsが設定したクッキーなど、より多くの方法でロケーション情報を取得したいと考えています.
どんな方法でインターネットを利用しても、デスクトップでも地理的な位置を見つけることができます.電話信号を受信したり、GPSチップを搭載した装置を使用すれば、地理的に位置決めされた座標の正確性はさらに驚くべきものだ.
訪問者の座標を検索
地理的位置付けの機能は実際には非常に簡単で、主にnavigatorである.geolocationオブジェクトの3つの方法:
  • getCurrentPosition();
  • watchPosition();
  • clearWatch();

  • getCurrentPosition()メソッドは、訪問者の位置を取得します.もちろん、検索場所はすぐに結果を返さず、ブラウザもページ待機位置データをロックしたくない.したがってgetCurrentPosition()メソッドは非同期であり、すぐに実行されますが、他のコードはブロックされません.地理的な位置決めが完了すると、返された結果を処理するために別のコードがトリガーされます.
    地理的な位置をテストするときは、地理的な位置をサポートするブラウザ(私が使用しているFirefox)を使用し、Webページにデータにアクセスできるようにする必要があります.エラー処理と地理的位置設定の使用に関する知識を習得します.
    エラー処理
    訪問者が位置データを共有したくない場合、地理的位置は位置情報を返しません.このような場合、完了関数はまったく呼び出されません.ページは、ブラウザがデータをマイニングし続けているのか、エラーが発生しているのかを教えてくれません.この問題を解決するために、getCurrentPosition()を呼び出すときに2つのパラメータを入力できます.1つ目は、ページが正常にデータを取得したときに関数が呼び出され、2つ目の関数は、地理的位置がエラーで終了したときに呼び出されます.
    完了関数とエラー関数を同時に入力する例を次に示します.
    window.onload = function() {
      results = document.getElementById("results");
      var myOptions = {
        zoom: 13,
        mapTypeId: google.maps.MapTypeId.ROADMAP
      };
      map = new google.maps.Map(document.getElementById("mapSurface"), myOptions);
      if (navigator.geolocation) {
        navigator.geolocation.getCurrentPosition(
          geolocationSuccess, geolocationFailure
        );
        results.innerHTML = "     .";
      } else {
        results.innerHTML = "           ";
      }
    };
    function geolocationSuccess(position) {
    results.innerHTML = "    ("+position.coords.latitude+","+position.coords.longitude+")";
    }
    function geolocationFailure(positionError) {
        results.innerHTML =
         "      ";
    }

    エラー関数を呼び出すと、ブラウザはcodeとmessageの2つのプロパティを持つエラー関数にエラーオブジェクトを入力します.code属性は問題のタイプを表す数値です.Messageには問題の簡単な説明が含まれています.一般的に、messageプロパティはテストに多く使用され、codeプロパティは次の処理をどのように行うかを決定するために使用されます.次は、codeプロパティの可能なすべての値を検出する修正されたエラー関数です.
    function geolocationFailure(positionError) {
      if (positionError.code == 1) {
        results.innerHTML =
         "          ";
      }
      else if (positionError.code == 2) {
        results.innerHTML =
         "              。";
      }
      else if (positionError.code == 3) {
        results.innerHTML =
         "      ,   。";
      }
      else {
        results.innerHTML =
         "Sorry !       。";
      }
    }