JS新API標準地理的位置付け(navigator.geolocation)


新しいAPI規格では、navigator.geolocationを通じてデバイスの現在位置を取得し、位置オブジェクトに戻り、ユーザはこのオブジェクトからいくつかの経緯度の関連情報を得ることができる.
navigator.geolocationの3つの方法:
1. get CurrenntPosition()
2.ウォッチPosition()
3.クリーンウォッチ()
get CurrenntPosition()
使用方法:navigator.geolocation.get CurntPosition(success Callback,[errorCallback],[positionOptions]);
A)success Callback位置決め成功時に実行されるコールバック関数eg:function{alert(「緯度:」+positions.com ords.latitude+「;経度:」+positititions.com.longitude)}を取得します.
success Callbackは、属性timestampとcoordsがある地理的データオブジェクトpositionをパラメータとして返します.timestampは地理データの作成時間(タイムスタンプ)を表します.coordsは他の7つの属性を含みます.
1.coords.latitude:推定緯度2.coords.longitude:推定経度3.coords.altitude:推定高さ4.coords.accuracy:提供された米単位の経度と緯度推定の精度5.coords.altudeAccurary:提供された高されているデバイスの精度6単位移動角度方向は、正北方向に対して時計回りに7.coords.speedを計算します.メートル毎秒単位の設備の現在の対地速度
PS:firefoxの下にはaddress属性があります.詳しい住所を得ることができますが、私が得た住所は間違っています.使い方:position.address.city.具体的には以下の通りです.
QueryInterface:function QueryInterface() { [native code] }
streetNumber:200 
street:    
premises:null
city:   
county:null
region:   
country:  
countryCode:CN
postalCode:null
getInterfaces:function getInterfaces() { [native code] }
getHelperForLanguage:function getHelperForLanguage() { [native code] }
contractID:null
classDescription:null
classID:null
implementationLanguage:2
flags:8
SINGLETON:1
THREADSAFE:2
MAIN_THREAD_ONLY:4
DOM_OBJECT:8
PLUGIN_OBJECT:16
CONTENT_NODE:64
RESERVED:2147483648
B)errorCallback位置決め失敗時に実行されるコールバック関数eg:function{alert(error.message)}
errorCallbackはエラーデータオブジェクトerrorをパラメータとして返します.このオブジェクトには属性があります.
1.co.de:失敗の原因を表し、1 or 2 or 3に戻り、具体的にはPERMISSION_DENIED (数値は1) 地理的ポジショニングAPIを使用する権限がないことを示す.
POSITION_UNAVAILABLE (数値は2) デバイスの位置が特定できないことを示します.例えば、収集プログラムの位置を特定するための内部エラーが報告されています.全プロセスが失敗しました.
TIMEOUT (数値は3)タイムアウトを表します.
詳細表示 http://dev.w3.org/geo/api/spec-source.html#permission_denied_error
2.メッセージ:エラーメッセージの内容 
C) positionOptionsはpositionOptionsを設定してより細かい実行位置を設定します.positionOptionsは三つの属性を持っています.
enableHigh Accuuracy【true or false(デフォルト)】はより詳細で正確な構造に戻るかどうか、デフォルトはfalseでは有効ではないが、trueを選択すると有効になるが、より長い応答時間と消費電力が増加するため、このような場合はモバイルデバイスにより多く使われる.
timeout機器位置取得動作のタイムアウト時間設定(ユーザ権限取得時間を含まない)は、単位がミリ秒であり、設定したタイムアウト時間内に位置特定が取れない場合は、errorCallback()を実行してcodeに戻る(3).timeoutが設定されていない場合、timeoutはデフォルトでは無限大であり、timeoutが負であればデフォルトではtimeoutは0です.
maximAgeは位置キャッシュ時間をミリ秒単位で設定します.この値を設定しないとデフォルトは0です.負の値を設定するとデフォルトは0です.この値が0の場合、位置合わせ時に新たな位置オブジェクトを取得します.この値が0より大きい場合、つまり前回の取得位置の時から、キャッシュ位置オブジェクトは、再度取得位置時間がmaximAgeを超えない場合、キャッシュ中の位置に戻ります.maximAgeを超えたら、新たな位置を取得します.
ウォッチ・ポイント()
機能get CurrenntPosition()は、定期ポーリングデバイスの位置であり、同様に3つのパラメータを持っています.get CurrenntPosition()と同じです.
使用方法:navigator.geolocation.watch Position;
実行ステップ:
1.まずpositionOptions内の属性を初期化します(詳細は同じです).
2.キャッシュ位置オブジェクトがあるかどうかを判断し、対象年齢が利用可能かどうか、maximAgeを超えていないかを判断し、利用可能であれば、キャッシュ位置に戻ります.そうでなければ、デバイス位置を再決定します.
3.位置位置決め操作:
i.タイムアウト前に完了したら次のステップを実行するタイマを作成し、位置取得動作を行う.timeoutの前に完了していない場合は、errorCallback()を実行し、codeは3であり、ステップを飛び出して再起動を待つ.
ii.timeoutの前に位置が成功したら、success Callback()を実行し、タイマをリセットし(位置取得成功時刻から再計算)、新しい位置を取得し続ける.前の位置と明らかに異なる位置がある場合は、再度success Callback()を実行し、タイムアウトまたは取得操作でPOSITION_uに出会うまでループを繰り返す.UNAVAILABLEでは、エラーカルバック()を誤って実行するまで、またはクリーンウォッチ()を実行します.
クリーンウォッチ()
ウォッチ・ポーリングを止めるために、ウォッチ・ポーリングを使用します.
watPosition()はウォッチID、var watch ID=watPositionを定義し、clearWatch(watch ID)によってウォッチPosition()を停止する必要があります.使い方はsetIntervalに似ています.
関連資料:
1. http://dev.w3.org/geo/api/spec-source.html#geolocation
2. http://kb.cnblogs.com/page/108732/
転載先:http://www.cnblogs.com/lecaf/