/********************************************************************************
SYNCER 〜 知識、感動をみんなと同期(Sync)するブログ
* 配布場所
https://syncer.jp/how-to-use-geolocation-api
* 最終更新日時
2015/08/16 03:17
* 作者
あらゆ
** 連絡先
Twitter: https://twitter.com/arayutw
Facebook: https://www.facebook.com/arayutw
Google+: https://plus.google.com/114918692417332410369/
E-mail: info@syncer.jp
※ バグ、不具合の報告、提案、ご要望など、お待ちしております。
※ 申し訳ありませんが、ご利用者様、個々の環境における問題はサポートしていません。
********************************************************************************/
// ユーザーの端末がGeoLocation APIに対応しているかの判定
// 対応している場合
if( navigator.geolocation )
{
// 現在地を取得
navigator.geolocation.getCurrentPosition(
// [第1引数] 取得に成功した場合の関数
function( position )
{
// 取得したデータの整理
var data = position.coords ;
// データの整理
var lat = data.latitude ;
var lng = data.longitude ;
var alt = data.altitude ;
var accLatlng = data.accuracy ;
var accAlt = data.altitudeAccuracy ;
var heading = data.heading ; //0=北,90=東,180=南,270=西
var speed = data.speed ;
// アラート表示
// alert( "あなたの現在位置は、\n[" + lat + "," + lng + "]\nです。" ) ;
// HTMLへの書き出し
document.getElementById( 'result' ).innerHTML = '
- 緯度
- ' + lat + '
- 経度
- ' + lng + '
- 高度
- ' + alt + '
- 緯度、経度の精度
- ' + accLatlng + '
- 高度の精度
- ' + accAlt + '
- 方角
- ' + heading + '
- 速度
- ' + speed + '
' ;
// 位置情報
var latlng = new google.maps.LatLng( lat , lng ) ;
// Google Mapsに書き出し
var map = new google.maps.Map( document.getElementById( 'map-canvas' ) , {
zoom: 15 , // ズーム値
center: latlng , // 中心座標 [latlng]
} ) ;
// マーカーの新規出力
new google.maps.Marker( {
map: map ,
position: latlng ,
} ) ;
},
// [第2引数] 取得に失敗した場合の関数
function( error )
{
// エラーコード(error.code)の番号
// 0:UNKNOWN_ERROR 原因不明のエラー
// 1:PERMISSION_DENIED 利用者が位置情報の取得を許可しなかった
// 2:POSITION_UNAVAILABLE 電波状況などで位置情報が取得できなかった
// 3:TIMEOUT 位置情報の取得に時間がかかり過ぎた…
// エラー番号に対応したメッセージ
var errorInfo = [
"原因不明のエラーが発生しました…。" ,
"位置情報の取得が許可されませんでした…。" ,
"電波状況などで位置情報が取得できませんでした…。" ,
"位置情報の取得に時間がかかり過ぎてタイムアウトしました…。"
] ;
// エラー番号
var errorNo = error.code ;
// エラーメッセージ
var errorMessage = "[エラー番号: " + errorNo + "]\n" + errorInfo[ errorNo ] ;
// アラート表示
alert( errorMessage ) ;
// HTMLに書き出し
document.getElementById("result").innerHTML = errorMessage;
} ,
// [第3引数] オプション
{
"enableHighAccuracy": false,
"timeout": 8000,
"maximumAge": 2000,
}
) ;
}
// 対応していない場合
else
{
// エラーメッセージ
var errorMessage = "お使いの端末は、GeoLacation APIに対応していません。" ;
// アラート表示
alert( errorMessage ) ;
// HTMLに書き出し
document.getElementById( 'result' ).innerHTML = errorMessage ;
}