更新中。

デバイスの位置情報を取得できる「Geolocation API」

スマートフォンをはじめとする通信用端末にはGPSが搭載されています。このGPS機能が計測した現在地をJavaScriptで取得する方法を紹介します。

アクセス時点での現在地を取得しよう

以下のサンプルは、このページにアクセスした時点での現在地を取得します。18行目からのオプションには以下のプロパティを設定できます。

enableHighAccuracy: 高精度で現在地を取得するかどうか(true/false)を設定する。trueにすると高精度な現在地を取得できるが、取得までの時間がかかることと、バッテリー消費量が増加する。
timeout: 現在地を特定するまでの判定時間(ms)を設定する。設定した時間内に特定できなければエラーとなる。
maximumAge: 取得した現在地情報のキャッシュ時間(ms)を設定する。
<!DOCTYPE html>
<meta charset="utf-8">
<meta name="viewport" content="initial-scale=1.0">
<title>デバイスのGPSで現在地を取得するサンプル</title>

<ul>
  <li>緯度:<span id="lat"></span>°
  <li>経度:<span id="lon"></span>°
  <li>高度:<span id="alt"></span>m
  <li>座標精度:<span id="accuracy"></span>m
  <li>高度精度:<span id="altAccuracy"></span>m
  <li>方位:<span id="head"></span>°
  <li>速度:<span id="speed"></span>m/s
  <li>標準時:<span id="time"></span>
</ul>

<script>
var options = {
  enableHighAccuracy: true,
  timeout: 15000,
  maximumAge: 0
}
navigator.geolocation.getCurrentPosition(done, function(){alert('失敗')}, options);

function done(position){
  document.getElementById('lat').innerHTML = position.coords.latitude;
  document.getElementById('lon').innerHTML = position.coords.longitude;
  document.getElementById('alt').innerHTML = position.coords.altitude;
  document.getElementById('accuracy').innerHTML = position.coords.accuracy;
  document.getElementById('altAccuracy').innerHTML = position.coords.altitudeAccuracy;
  document.getElementById('head').innerHTML = position.coords.heading;
  document.getElementById('speed').innerHTML = position.coords.speed;
  document.getElementById('time').innerHTML = new Date(position.timestamp);
}
</script>

リアルタイムに現在地を取得しよう

<!DOCTYPE html>
<meta charset="utf-8">
<meta name="viewport" content="initial-scale=1.0">
<title>デバイスのGPSで現在地を取得するサンプル</title>

<ul>
  <li>緯度:<span id="lat"></span>°
  <li>経度:<span id="lon"></span>°
  <li>高度:<span id="alt"></span>m
  <li>座標精度:<span id="accuracy"></span>m
  <li>高度精度:<span id="altAccuracy"></span>m
  <li>方位:<span id="head"></span>°
  <li>速度:<span id="speed"></span>m/s
  <li>標準時:<span id="time"></span>
</ul>

<script>
var options = {
  enableHighAccuracy: true,
  timeout: 15000,
  maximumAge: 0
}
navigator.geolocation.watchPosition(done, function(){alert('失敗')}, options);

function done(position){
  document.getElementById('lat').innerHTML = position.coords.latitude;
  document.getElementById('lon').innerHTML = position.coords.longitude;
  document.getElementById('alt').innerHTML = position.coords.altitude;
  document.getElementById('accuracy').innerHTML = position.coords.accuracy;
  document.getElementById('altAccuracy').innerHTML = position.coords.altitudeAccuracy;
  document.getElementById('head').innerHTML = position.coords.heading;
  document.getElementById('speed').innerHTML = position.coords.speed;
  document.getElementById('time').innerHTML = new Date(position.timestamp);
}
</script>

参考

執筆者Writer

AnTytle

コメントComment

ログインするとサムネや名前を表示できます。