iphoneに搭載されているセンサー(GPS位置情報、ジャイロセンサー、電子コンパス、加速度センサー)の情報を取得
現時点における、モバイルデバイスの各センサーから情報を取得する方法を確認してみました。
iPhone4sでしか試していません。
example
(iphone,ipadでアクセスしてください)
サンプルコード
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 54 55 56 57 58 59 60 61 62 63 64 65 66 67 68 69 70 71 72 73 74 75 76 77 78 79 80 81 82 83 84 85 86 |
//位置情報取得 window.onload = function(){ navigator.geolocation.watchPosition(update); //現在位置情報を定期的に監視 // navigator.geolocation.getCurrentPosition(); //現在位置情報を取得 // navigator.geolocation.clearWatch(); //watchPosition()での監視を中止 } function update(position){ //下記すべての情報が取得できるわけでは無い var lat = position.coords.latitude; //緯度 var lng = position.coords.longitude; //経度 var alt = position.coords.altiude; //高度 var acc = position.coords.accuracy; //緯度経度の誤差 var alc = position.coords.altiudeAccuracy; //高度の誤差 var hed = position.coords.heading; //方角 var spe = position.coords.speed; //スピード var html =""; html += "緯度:" + lat + "<br>"; html += "経度:" + lng + "<br>"; html += "高度:" + alt + "<br>"; html += "緯度経度誤差:" + acc + "<br>"; html += "高度誤差:" + alc + "<br>"; html += "方角:" + hed + "<br>"; html += "速度:" + spe + "<br>"; document.getElementById("geolocation").innerHTML = html; } //デジタルコンパス情報取得&ジャイロセンサー情報 window.addEventListener("deviceorientation", function(evt){ //デジタルコンパス情報取得 var ch = evt.webkitCompassHeading; var chAcc = evt.webkitCompassAccuracy; var html =""; html += "方角:"+ch html += " 誤差:"+chAcc; document.getElementById("compass").innerHTML = html; //ジャイロセンサー情報取得 var alpha = evt.alpha; // z-axis var beta = evt.beta; // x-axis var gamma = evt.gamma; // y-axis var html =""; html += 'Z回転(alpha):' + alpha + "<br>"; html += "X回転(beta):" + beta + "<br>"; html += "Y回転(gumma):" + gamma; document.getElementById("gyroscope").innerHTML = html; }, false); //加速度センサー情報取得 window.addEventListener("devicemotion", function(evt){ //加速度 var x = evt.acceleration.x; var y = evt.acceleration.y; var z = evt.acceleration.z; //傾き var xg = evt.accelerationIncludingGravity.x; //左右 var yg = evt.accelerationIncludingGravity.y; //上下 var zg = evt.accelerationIncludingGravity.z; //前後 //回転値 var a = evt.rotationRate.alpha; //z方向 var b = evt.rotationRate.beta; //x方向 var g = evt.rotationRate.gamma; // y方向 var html =""; html += "x:"+x+"<br>"; html += "y:"+y+"<br>"; html += "z:"+z+"<br>"; html += "傾きx:"+xg+"<br>"; html += "傾きy:"+yg+"<br>"; html += "傾きz:"+zg+"<br>"; html += "alpha(z):"+a+"<br>"; html += "beta(x):"+b+"<br>"; html += "gamma(y):"+g+"<br>"; document.getElementById("rotation").innerHTML = html; }, true); |
javascriptでデバイスのセンサーにアクセスできるようになるなんて……良い時代ですね。
“一般人がGPSを搭載したデバイスを肌身離さず持ち歩いている”なんてことも今までにはなかったことで、WebGISとかと組み合わせたらきっと面白いことができる気がします。