/********************************************************************************
SYNCER 〜 知識、感動をみんなと同期(Sync)するブログ
* 配布場所
https://syncer.jp/how-to-use-geolocation-api
* 最終更新日時
2015/08/16 01:16
* 作者
あらゆ
** 連絡先
Twitter: https://twitter.com/arayutw
Facebook: https://www.facebook.com/arayutw
Google+: https://plus.google.com/114918692417332410369/
E-mail: info@syncer.jp
※ バグ、不具合の報告、提案、ご要望など、お待ちしております。
※ 申し訳ありませんが、ご利用者様、個々の環境における問題はサポートしていません。
********************************************************************************/
// グローバル変数
var syncerWatchPosition = {
count: 0 ,
lastTime: 0 ,
map: null ,
marker: null ,
} ;
// 成功した時の関数
function successFunc( position )
{
// データの更新
++syncerWatchPosition.count ; // 処理回数
var nowTime = ~~( new Date() / 1000 ) ; // UNIX Timestamp
// 前回の書き出しから3秒以上経過していたら描写
// 毎回HTMLに書き出していると、ブラウザがフリーズするため
if( (syncerWatchPosition.lastTime + 3) > nowTime )
{
return false ;
}
// 前回の時間を更新
syncerWatchPosition.lastTime = nowTime ;
// HTMLに書き出し
document.getElementById( 'result' ).innerHTML = '
緯度' + position.coords.latitude + '経度' + position.coords.longitude + '高度' + position.coords.altitude + '速度' + position.coords.speed + '実行回数' + syncerWatchPosition.count + '回' ;
// 位置情報
var latlng = new google.maps.LatLng( position.coords.latitude , position.coords.longitude ) ;
// Google Mapsに書き出し
if( syncerWatchPosition.map == null )
{
// 地図の新規出力
syncerWatchPosition.map = new google.maps.Map( document.getElementById( 'map-canvas' ) , {
zoom: 15 , // ズーム値
center: latlng , // 中心座標 [latlng]
} ) ;
// マーカーの新規出力
syncerWatchPosition.marker = new google.maps.Marker( {
map: syncerWatchPosition.map ,
position: latlng ,
} ) ;
}
else
{
// 地図の中心を変更
syncerWatchPosition.map.setCenter( latlng ) ;
// マーカーの場所を変更
syncerWatchPosition.marker.setPosition( latlng ) ;
}
}
// 失敗した時の関数
function errorFunc( error )
{
// エラーコードのメッセージを定義
var errorMessage = {
0: "原因不明のエラーが発生しました…。" ,
1: "位置情報の取得が許可されませんでした…。" ,
2: "電波状況などで位置情報が取得できませんでした…。" ,
3: "位置情報の取得に時間がかかり過ぎてタイムアウトしました…。" ,
} ;
// エラーコードに合わせたエラー内容を表示
alert( errorMessage[error.code] ) ;
}
// オプション・オブジェクト
var optionObj = {
"enableHighAccuracy": false ,
"timeout": 1000000 ,
"maximumAge": 0 ,
} ;
// 現在位置を取得する
navigator.geolocation.watchPosition( successFunc , errorFunc , optionObj ) ;