getCurrentPosition は精度が出ないので watchPosition を使う。

PC版へ 2011年11月04日
JavaScriptで位置情報を取得するのに、ふたつのメソッドが用意されています。


→ 参考:Geolocation の利用 - MDN

現在位置を特定したいのであれば get〜 を使えば良さそうなのだけれど、一発だけの測定だと非常に精度が悪い。精度を高めるには、


という解決方法が考えられます。たぶん後者のほうが簡単に書けそうなので、こちらを採用。例えばこんな感じ。測定開始から5秒後に終了して、得られた緯度・経度を表示します。
<script type="text/javascript">
var watchID;
var lat;
var lng;
var geoOptions = {
                        maximumAge : 0 ,
                        timeout : 2000 ,
                        enableHighAccuracy : true
                        };
var WAIT = 5000;

watchID = navigator.geolocation.watchPosition( onSuccess , onErr , geoOptions );
setTimeout( function(){ navigator.geolocation.clearWatch( watchID );
                                  alert( '緯度:' + lat + ' / 経度:' + lng );} ,
                                  WAIT );

function onSuccess( pos ){
  lat = pos.coords.latitude ;
  lng = pos.coords.longitude ;
}

function onErr( err ){
  // エラー処理
}
</script>

手許の iPhone で試してみると、数秒間の測定で割と充分な精度が得られました。

エラーコードのメモ。上の例だと、エラーコールバック関数内 err.code で参照できます。


関連記事

コメント

現在、コメント機能は停止しています。