無料スクリプトならphp.to

PHPスクリプト無料配布所 :: PHP.TO







アクセスアップ・上位表示ならSEO.CUG.NET
安くて早い!SEOに強いコーディング代行サイト AcodeZ(アコーズ)
無料スクリプトならphp.to PHPスクリプト無料配布!php.to
リンクはご自由に


0011. 携帯電話端末用GPS機能を利用した緯度経度情報の利用方法(その2)
<< 0010. mod_perlは本当に速いのか?
需要がないと思って、すっかり間が空いてしまってました。
久々に更新します。

サブルーチン単位の公開になってすみませんが、dms度分秒単位とdegree度単位の相互変換関数を紹介します。
どちらかに合わせて計算したいのに、携帯電話によってはdmsまたはdegree系でしか座標を取得できなかったり、キャリアによって微妙にフォーマットが違うことがあります。そんなときの変換にどうぞ。
(ただし、こちらも桁落ち・丸め誤差が発生しますので精度は落ちます)

ここに載っていない機種については、degree度単位で座標が取得できたと思います。


<?php
    
/* dms(少数以下が60進)とdegree(10進)の相互変換 */
    // 緯度経度を度分秒(dms)形式に変換
    
function degree2dms($degree) {
        
$n 1000;
        
$u floor($degree*3600*$n 0.5);
        
$s = (int)($u/$n) % 60;
        
$m = (int)($u/60/$n) % 60;
        
$d = (int)($u/3600/$n);
        
$u %= $n;
        return 
sprintf("%d.%02d.%02d.%s"$d,$m,$s,$u);
    }
    
// au (GPS非対応機用)
    
function dms2degree_au_no_gps($in) {
        
$a explode("."$in);
        
$tmp sprintf("%f"$a[0]+$a[1]/60+($a[2].".".$a[3])/3600);
        return 
$tmp;
    }
    
// au (GPS対応機用)
    
function dms2degree_au_gps($in) {
        
$a explode("."$in);
        
$tmp sprintf("%f"str_replace("+","",$a[0])+$a[1]/60+($a[2].".".$a[3])/3600);
        return 
$tmp;
    }
    
// softbank (1G/2G用)
    
function dms2degree_softbank_no_3g($in) {
        
$a explode("."$in);
        if (
count($a) > 2) {
            
$tmp sprintf("%f"$a[0]+$a[1]/60+($a[2].".".$a[3])/3600);
        } else {
            
$tmp sprintf("%f"$a[0]+substr($a[1],0,2)/60+substr($a[1],2,2)/3600);
        }
        return 
$tmp;
    }
?>


正規表現で書いたら、もっとすっきりしそうですね。

>> 0012. PHPで日本語ドメインを使う方法
track back URL : http://php.to/tips/11/trackback/

コメント

コメントはまだありません


よろしければコメントをどうぞ ※spam防止のため、半角英数字のみの投稿はできません
お名前(必須):
URL:
コメント(必須):

パソコンメーカーのデル
XPS 15z
Vostro 3750

- SEO.CUG.NET :: スクリプト配布チーム -