2017년 1월 2일 월요일

Geolocation

http://mikaduki.info/api/1823/
http://help.opera.com/Windows/10.61/ja/geolocation.html#details

Geolocation機能は、ユーザが現在地球上のどの位置にいるかを特定する機能
Geolocationは、ユーザの位置情報を教えてくれるAPI


Geolocation仕組み

無線LAN、携帯電話基地局、GPS、IPアドレスなどから送信されたデータを取得


Geolocationオブジェクト取得
navigator.geolocaion --> Andoroid端末では対応してない場合がるので、googleのWEB拡張設定を使って値を取得

◆Andoroid用option設定は、

・GPSを使用して正確さを増やす
・データ取得を待つミリ秒
・キャッシュを保持するミリ秒

var option = {enableHighAcuuracy:true, timeout:10000, maximumAge:0};

◆データ取得については、
現在の位置を一度きりのデータを取得する方法と
一定間隔おきにデータを取得する方法がある

・geolocation.getCurrentPosition($成功時コールバック関数、$失敗時コールバック関数、$オプション)
・geolocation.watchPosition($成功時コールバック関数、$失敗時コールバック関数、$オプション)

※clearWatch --> watchPositionでの定期的な取得をクリア

◆positionのcoordsプロパティ
緯度
経度
高度
方向
スピード
緯度経度の精度
高度の精度

・position.coords.latitude
position.coords.longitude
position.coords.altitude
position.coords.heading
position.coords.speed
position.coords.accuracy
position.coords.altitudeAccuracy

◆errorプロパティ
geolocation情報取得に失敗した場合のエラーコード、メッセージ
・error.code
・error.message


------------------------------------------------------------------

        <div id="latitude"></div>
        <div id="longitude"></div>
        <div id="altitude"></div>
        <div id="speed"></div>
        <div id="accuracy"></div>
        <div id="heading"></div>      
        <div id="altitudeAccuracy"></div>        
        <script type="text/javascript">
            (function (){
                debugger;
                var geo = window.navigator.geolocation;
                // geolocationオブジェクトが使えない場合、
                // googleのWEB拡張設定を使って値を取得
                if(geo === undefined){
                    geo = google.gears.factory.create('beta.geolocation');
                }
             
                // Android用option設定
                // GPSを利用して制度を増やすか、データの取得を待つミリ秒、キャッシュ保持時間(ミリ秒)、
                var option = {enableHighAccuracy:true, timeout:10000, maximumAge:0};
             
                // ユーザの位置を一度きりで取得
                geo.getCurrentPosition(success, fail, option);
             
                // 一定間隔おきに位置情報データ取得
                geo.watchPosition(success, fail, option);
             
                function success(position){
                    alert('geolocation情報取得成功');
                    $('latitude').innerHTML = "緯度:" + position.coords.latitude;
                    $('longitude').innerHTML = "経度:" + position.coords.longitude;
                    $('heading').innerHTML = "方向:" + position.coords.heading;
                    $('altitude').innerHTML = "高度:" + position.coords.altitude;
                    $('speed').innerHTML = "速度:" + position.coords.speed;
                    $('accuracy').innerHTML = "緯度緯度の精度:" + position.coords.accuracy;
                    $('altitudeAccuracy').innerHTML = "高度の精度:" + position.coords.altitudeAccuracy;                  
                }
             
                function $(id){
                    return document.getElementById(id);
                }
             
                function fail(err){
                    alert('geolocation情報取得失敗 ' + err.code + " : " + err.message);
                }
             
            })();
         

        </script>


댓글 없음:

댓글 쓰기