HTML5では、位置情報取得のためのGeolocationAPIが用意されています。
現在地の取得
実 例
HTMLソース
<form> <input type="button" id="get" value="現在地の位置情報を取得"><br> <input type="button" id="stop" value="位置情報の取得を停止"> </form>
スクリプトサンプル
// 現在地の情報を表示 window.addEventListener("load", function(){ // 情報を表示するための領域を指し示す変数 var ele = document.getElementById("status"); // Geolocation APIに対応しているか調べる if (!navigator.geolocation){ ele.innerHTML = "Geolocation APIに対応していません"; return; } // 監視用IDを入れるための変数 var watchID = null; document.getElementById("get").addEventListener("click", function(){ var option = { enableHighAccuracy : true,// 詳細な位置を取得 timeout : 60*1000,// タイムアウトまでは60秒 maximumAge : 0// 最新のデータを取得 } watchID = navigator.geolocation.watchPosition(getPos, errPos, option); }, true); // 位置情報を取得した場合に処理を行う関数 function getPos(position){ var lat = position.coords.latitude;// 緯度 var lng = position.coords.longitude;// 経度 var alt = position.coords.altitude;// 高度 var acc = position.coords.accuracy;// 緯度経度の誤差 var altAcc = position.coords.altitudeAccuracy;// 高度の誤差 var hd = position.coords.heading;// 方角 ele.innerHTML = "緯度:"+lat+"<br>経度:"+lng+"<br>緯度経度の誤差:"+acc+" m<br>"+ "高度:"+alt+"<br>高度の誤差:"+altAcc+" m<br>方角:"+hd; } // 位置情報の取得に失敗した場合に処理を行う関数 function errPos(error){ var message = [ "", "ユーザーが位置情報の提供を拒否しました", "何らかの原因で位置情報を取得できませんでした", "タイムアウトしました。時間内に位置を特定できませんでした" ] ele.innerHTML = error.code+":"+message[error.code]; } // 位置情報の定期的な取得を停止 document.getElementById("stop").addEventListener("click", function(){ // 位置情報の取得が行われていない場合は何もしない if(watchID == null){ ele.innerHTML = "位置情報の取得は行っていません"; return; } navigator.geolocation.clearWatch(watchID); ele.innerHTML = "位置情報の取得を停止しました"; // 監視を解除したことを示すのでnullを入れる watchID = null; }, true); }, true);