geolocationに基づいて緯度アドレスを取得する

3657 ワード

従来,インターネットユーザの所在地を取得するには,ユーザのIPアドレスに基づいて地理的位置を取得していたが,取得したデータと実際のデータには大きなばらつきがあった.より正確な位置を得るためにhtml 5のgeolocationを使用して経緯度を取得し、位置を取得し、どのように取得するかについては、以下で説明します.まず基本概念を話します.
Geolocationのnavigatorオブジェクトではnavigatorを使用できます.geolocationで使用します.geolocationをサポートしていないブラウザにはこのオブジェクトが含まれていないので、次のコードで能力検出を行い、異なるブラウザに対して異なる処理を行うことができます.geolocationオブジェクトにアクセスすると、geolocationの次のメソッドが呼び出されると、ブラウザは、Webサイトが提供するロケーションサービスを許可するかどうかをユーザーに尋ねるプロンプトをポップアップし、ユーザーの許可を得た後にのみサービスが継続します.そうしないと停止します. 
よく使われるnavigatorgeolocationオブジェクトには、次の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)  
パラメータposition_オプションはコンフィギュレーションアイテムで、JSON形式で入力されます.
EnableHighAccuracy:true/falseは、ブラウザが高精度デバイスを有効にするかどうかを示します.いわゆる高精度デバイスには、前述のGPSとWIFIが含まれていますが、trueの値がある場合、ブラウザはこれらのデバイスを有効にしようとします.デフォルトはtrueです.この場合、ブラウザはできるだけ正確なクエリーを行います.簡単に言えば、利用可能なGPSデバイスがあれば、GPSデバイスのクエリー結果に戻ります.IPは最後の選択です.モバイルデバイスにとって、ネットワークアクセスポイント(基地局)は別の選択になるかもしれません.これについてはまだ完全に理解していませんが、テストによると、追加機能のない携帯電話でも、より正確なクエリー結果を得ることができます.
maximumAge:ミリ秒単位で、デバイスのキャッシュ時間を教え、主にデバイスの省電力または帯域幅の節約に使用されます.
timeout:ミリ秒単位、タイムアウトイベント、位置情報取得時に設定されたこの時間を超えると、エラーがトリガーされ、エラーをキャプチャする関数が呼び出され、エラーコードがTIMEOUTを指します.
var position_option = {
                enableHighAccuracy: true,
                maximumAge: 30000,
                timeout: 20000
            };
navigator.geolocation.getCurrentPosition(getPositionSuccess, getPositionError, position_option);
function getPositionSuccess( position ){
        var lat = position.coords.latitude;
        var lng = position.coords.longitude;
        alert( "      :   " + lat + ",  " + lng );
        if(typeof position.address !== "undefined"){
                var country = position.address.country;
                var province = position.address.region;
                var city = position.address.city;
                alert('     ' + country + province + ' ' + city +' ');
        }
}

coordsのその他の戻り情報:
coords.accuracy:緯度を返す精度(メートル)
coords.速度:速度
coords.Altitude:現在の高さ、標高(メートル)
coords.AltitudeAccuracy:高さの精度(メートル)
coords.heading:向き
function getPositionError(error) {
    switch (error.code) {
        case error.TIMEOUT:
            alert("    ,   ");
            break;
        case error.PERMISSION_DENIED:
            alert("            ,     ");
            break;
        case error.POSITION_UNAVAILABLE:
            alert("        ");
            break;
    }
}

都市情報を取得するときはfirefoxのみが都市アドレスを提供します.chromは与えません.もちろんsogou地図は位置情報を取得するapiを提供している.
リンクアドレス:http://map.sogou.com/api/documentation/javascript/api2.5/interface_regeocode.html
モバイルデバイスの地理的位置の取得方法:navigator.geolocation.watchPosition
モバイルデバイスを使用するユーザにとって、位置は固定されていないが、W 3 Cは当然、この点を考慮して、watchPositionはこの状況を処理するための方法であり、watchPositionが呼び出されると、ブラウザはデバイスの位置を追跡し、位置の変化ごとにwatchPositionのコードが実行される.モバイルデバイスのWeb開発に力を入れている学生にとって、この方法は重要であり、Webモバイルクライアントの構造を変える可能性があります.navigatorを使用します.geolocation.clearWatchは、navigator.geolocation.watchPositionの監視イベントをクリアします.