ユーザー地理情報の取得

6349 ワード

プロジェクトでGoogleマップを使うため、この2、3日でGoogleマップApiを研究しましたが、Googleマップを使うには地理的な位置付けが必要です.ユーザーの位置をどのように検出しますか?いくつかの方法があります.
1.一部の新しいバージョンのブラウザでは、W 3 C Geolocation規格のサポートが開始されています.この基準はHTML 5の一部であり、今後は本格的な基準になる可能性が高い.この基準は、地理的な位置づけを実行するすべてのアプリケーションがサポートする必要があります.(ユーザーがブラウザで共有地理的位置を設計する必要がある)
2.一部のGoogle Gears付きブラウザでは、Google Gears Geolocation APIを使用できます.(http://code.google.com/apis/gears/gears_init.js参照の場合)
3.IPアドレスでユーザの位置を検出し、データベースから対応する位置の緯度を取得する.(この方式はあまり良くないですよ)
まずGeolocationを紹介します
GeolocationはW 3 Cに新たにAPI仕様を追加したものであり、Geoloaction APIの役割はブラウザを通じてユーザの地理的位置を取得することである.navigator.geolocationを使用して、ユーザーの地理的位置情報を簡単に取得できます.
Geolocation JavaScriptのnavigatorオブジェクトではnavigatorを使用できます.geolocationで使用します.geolocationをサポートしていないブラウザにはこのオブジェクトが含まれていないので、次のコードで能力検出を行い、異なるブラウザに対して異なる処理を行うことができます.
if (navigator.geolocation) {

        alert( '       geolocation ' );

}else{

        alert( '        geolocation ' );

}

geolocationオブジェクトにアクセスすると、geolocationの次のメソッドが呼び出されると、ブラウザは、Webサイトが提供するロケーションサービスを許可するかどうかをユーザーに尋ねるプロンプトをポップアップします.ユーザーの許可を得てから、サービスは継続されます.そうしないと、停止されます.後で、ユーザーがサービスを拒否する動作をキャプチャできます.
navigator.geolocationオブジェクトには、次の3つの方法があります.
  • 現在の地理的位置:navigatorを取得する.geolocation.getCurrentPosition(success_callback_function, error_callback_function, position_options)
  • 地理的位置:navigator.geolocation.watchPosition(success_callback_function, error_callback_function, position_options)
  • 地理的位置を取得し続けるイベント:navigator.geolocation.clearWatch(watch_position_id)

  • ここでsuccess_callback_functionは成功後に処理される関数、error_callback_functionは失敗後に返される処理関数であり、パラメータposition_optionsは構成項目です.
    position_オプションはJSON形式で入力されます.
  • enableHighAccuracy:true/falseは、ブラウザが高精度デバイスを有効にするかどうかを示します.いわゆる高精度デバイスには、前述したGPSとWIFIが含まれていますが、trueの値がある場合、ブラウザはこれらのデバイスを有効にしようとします.デフォルトはtrueです.この場合、ブラウザはできるだけ正確なクエリーを行います.簡単に言えば、利用可能なGPSデバイスがあれば、GPSデバイスのクエリー結果に戻ります.IPは最後の選択です.モバイルデバイスにとって、ネットワークアクセスポイント(基地局)は別の選択になるかもしれません.これについてはまだ完全に理解していませんが、テストによると、追加機能のない携帯電話でも、より正確なクエリー結果を得ることができます.
  • maximumAge:ミリ秒単位で、主にデバイスの省電力または帯域幅の節約に使用されるキャッシュ時間をデバイスに伝えます.
  • timeout:ミリ秒単位、タイムアウトイベント、位置情報取得時に設定されたこの時間を超えるとエラーがトリガーされ、エラーをキャプチャする関数が呼び出され、エラーコードがTIMEOUTを指す.

  • 緯度コードの取得:(http://code.google.com/apis/gears/gears_init.jsを参照する必要があります)
    function InitLatLng() {
    var initialLocation = new google.maps.LatLng(32.07, 118.78);//

    if (navigator.geolocation) // W3C Geolocation
    {
    navigator.geolocation.getCurrentPosition(
    function(position){initialLocation = new google.maps.LatLng(position.coords.latitude,position.coords.longitude); },
    function() { initialLocation = GetUserLatLngByIp(); }
    );
    }
    else if (google.gears) // Google Gears
    {
    var geo = google.gears.factory.create('beta.geolocation');
    geo.getCurrentPosition(
    function(position) { initialLocation = new google.maps.LatLng(position.coords.latitude, position.coords.longitude); },
    function() { initialLocation = GetUserLatLngByIp(); }
    );
    }
    else // Ip
    {
    initialLocation=GetUserLatLngByIp();
    }
    return initialLocation;
    }

    // Ip
    function GetUserLatLngByIp() {
    var initialLocation = new google.maps.LatLng(32.07, 118.78); //
    // Ip
    return initialLocation;
    }

     
    作者:JetWu出典:http://jetwu.cnblogs.com/本博オリジナル文章著作権はブログ園と本人に共有され、転載を歓迎するが、著者の同意を得ずにこの声明を保留し、文章ページの明らかな位置に著者名と原文の接続を与えなければならない.そうしないと、法律責任を追及する権利を保留する.