つやつや
gajapaのサービス
FONサーチ
カテゴリー
新しい記事
最近のコメント
最近のトラックバック
アーカイブ
リンク
OTHER
 

2010,10,17, Sunday
携帯電話でのGoogleMapをしようするにはAjaxではなく、静的画像を利用して表示させることが多かったのですが、昔は対応していなくてGoogleMapをハックして利用するのが一般的でした。
数年前に、Googleも公式に対応したのですが、プログラムを変更するのが面倒だったし使用できていたので、放置いていました。

しかし、最近地図が表示されなくなり、FONサーチ利用者から「地図が表示ができない」というメールをいただき、重い腰を上げる事にしました。

Static Maps API V2 デベロッパー ガイドを参考に、今までの非公式の書き方から、公式の書き方へ変換してみました。覚えちゃえばそんなに難しくないですね。

■非公式なGoogleMapの利用方法(見やすいように各行を改行しています)
http://maps.google.com/mapdata?
Point=b&Point.latitude_e6=35665497&Point.longitude_e6=139759644&Point.iconid=17&Point=e&
Point=b&Point.latitude_e6=35666824&Point.longitude_e6=139759521&Point.iconid=18&Point=e&
Point=b&Point.latitude_e6=35667290&Point.longitude_e6=139760605&Point.iconid=19&Point=e&
Point=b&Point.latitude_e6=35663239&Point.longitude_e6=139760101&Point.iconid=20&Point=e&
Point=b&Point.latitude_e6=35663170&Point.longitude_e6=139761276&Point.iconid=21&Point=e&
Point=b&Point.latitude_e6=35663086&Point.longitude_e6=139761292&Point.iconid=22&Point=e&
Point=b&Point.latitude_e6=35664951&Point.longitude_e6=139756256&Point.iconid=23&Point=e&
Point=b&Point.latitude_e6=35666447&Point.longitude_e6=139756058&Point.iconid=24&Point=e&
Point=b&Point.latitude_e6=35665498&Point.longitude_e6=139759640&Point.iconid=33&Point=e&
latitude_e6=35665498&longitude_e6=139759640&
zm=1200&w=240&h=240&cc=JP&min_priority=1

■公式なGoogleMapの利用方法(見やすいように各行を改行しています)
http://maps.google.com/maps/api/staticmap?
center=35.665498055556,139.75964&
markers=color:green|35.665498055556,139.75964&
markers=color:red|label:A|35.6654968262,139.759643555&
markers=color:red|label:B|35.6630859375,139.761291504&
markers=color:red|label:C|35.658706665,139.759033203&
markers=color:red|label:D|35.6584472656,139.756851196&
markers=color:red|label:E|35.6713027954,139.765228271&
markers=color:red|label:F|35.6650772095,139.751159668&
markers=color:red|label:G|35.6562805176,139.763015747&
markers=color:red|label:H|35.6586837769,139.752319336&
zoom=14&size=240x240&maptype=roadmap&sensor=false&format=jpg

ちょっと前まで公式利用ではAPIキーが必要だったような気がしますが、API キーがいらなくなったようで気軽に使用できますね。
また、AU携帯でURLが265文字までしか認識されない機種があるのでマーカーを増やせなかったのですが、公式利用ではURLが短くなるのでマーカーをちょっと増やしても大丈夫です。その為、FONサーチでは一画面の最大表示を8件から10件へと増やしました。

maps.google.com/mapdataを利用している方は、早急に変更することをおススメします。


| プログラム:地図関連 | comments (0) | trackback (3207) |
2008,02,06, Wednesday
世の中には、表があれば裏もある。
女がいれば男がいる。

そして、圧縮があれば解凍もある。


と言うワケで、Archive_Zipを使った圧縮に引き続き、解凍方法をです。(汗
PHPでZIPを解凍する方法は、いくつかあってそっちの方が有益かもしれませんが、一応書いておきます。

出来る事は、圧縮ファイル内のファイルリストの出力と、実際の解凍です。
<?php

//解凍する圧縮ファイルを指定
$zip_file = "/usr/hogehoge/example.zip";

//解凍先フォルダ
$dir = '/usr/hoge/hoge/hoge/this/';


require_once("Zip.php");

$objZip = new Archive_Zip($zip_file);

//リストを表示
$files = $objZip->listContent();
print_r($files);

//ファイルを解凍
$p_params = array ('add_path' => $dir);
$result = $objZip->extract($p_params);

?>

フォルダやZIPファイルの指定に、絶対パスを使用していますが、相対パスを使用したところ、ある条件で正しく作動しませんでした。

また、コレは回避できなかったのですが、解凍先フォルダと圧縮ファイル内のフォルダが一緒だと、フォルダが1個省略されてしまいます。

たとえば、
▼解凍フォルダ
/usr/hoge/this/

▼圧縮ファイル内構造
example.zip
└this
 └hoge.xls
だった場合、本当は、
/usr/hoge/this/this/hoge.xlsになるはずですが、
/usr/hoge/this/hoge.xlsになってしまいます。

ソフトに組み込む時には、注意が必要です。

使用ソフト:Archive_Zip 0.1.1 (beta)

関連記事: Archive_Zipを使って、ディレクトリごと圧縮するPHP


| プログラム | comments (0) | trackback (6756) |
2008,02,04, Monday
PHPでZIP圧縮する時、いくつかの方法があるようですが、コレ!という有力な方法はまだ無く試行錯の状態なようです。
調べたところPEAR::Archive_Zipを使った方法がよさそうですが、サブディレクトリごと圧縮すること出来ずちょっと使いづらいように思います。

そこで、サブディレクトリごと圧縮できるようにプログラムを書いてみました。

<?php

$dir = '/usr/hoge/hoge/hoge/this/';            //圧縮するディレクトリ
$zip_file = "/usr/hogehoge/example.zip";    //圧縮した後のファイルの保存場所
$zip_add_dir = "dir";                      //zipファイルに追加するディレクトリ


require_once("Zip.php");

chdir($dir);
$filelist = fFileListLoad($dir);
$filelist = str_replace($dir, '', $filelist);

$p_params = array('add_path' => $zip_add_dir);
$objZip = new Archive_Zip($zip_file);
$fileName = $filelist;
$text = $objZip->create($fileName,$p_params);

function fFileListLoad($dir){
//ファイル一覧を取得する

    if (is_dir($dir)) {
        if ($dh = opendir($dir)) {
            while (($file = readdir($dh)) !== false) {
                if(filetype($dir . $file) == 'dir'){
                    if($file == '.' or $file == '..'){

                    }else{
                        $filelist = array_merge($filelist,fFileListLoad($dir.$file.'/'));
                    }
                }else{
                    $filelist[] = $dir. $file;            //ファイルを導入
                }
            }
            closedir($dh);
        }
    }
    return $filelist;
}

?>


出来上がったexample.zip内のファイル構造は、以下のようになります。
example.zip
└dir
 ├hoge.jpg
 ├hogedir
 │├hoge2.jpg
 │└hoge2.txt
 ├hoge.txt
 └hoge.xls
dirは、「圧縮するディレクトリ」で指定したディレクトリになります。ディレクトリを作りたくなかったら、コメントアウトしてください。
hogedirは、this/ディレクトリ内に有ったディレクトリということです。ディレクトリ構造も含めて圧縮されます。

余談ですが、PEARのインストール方法を調べるとコマンドを使ってインストールの方法を解説しているページが多く、ややこしいしインストールがメンドクサイと敬遠していたのですが、PEARのphpファイルをただ単純にコピーしただけでもいいんですね。

使用ソフト:Archive_Zip 0.1.1 (beta)

関連記事: Archive_Zipを使って、ディレクトリを指定してZIPを解凍するPHP



| プログラム | comments (1) | trackback (2842) |
2008,01,20, Sunday
サーバ上の指定フォルダの中のファイルを全て取得します。結果は、配列で返します。

・下位フォルダ内も取得します。
・フォルダ名を含める事もできます。

<?php

//ディレクトリを指定
$dir = '/user/hoge/hogehoge/';

$filelist = fFileListLoad($dir);
print_r($filelist);

function fFileListLoad($dir){
//ファイル一覧を取得する

    if (is_dir($dir)) {
     if ($dh = opendir($dir)) {
     while (($file = readdir($dh)) !== false) {
                if(filetype($dir . $file) == 'dir'){
                    if($file == '.' or $file == '..'){
                    
                    }else{
                        //$filelist[] = $dir. $file.'/'; //ディレクトリも含める場合
                        $filelist = array_merge($filelist,fFileListLoad($dir.$file.'/'));
                    }
                }else{
         $filelist[] = $dir. $file;
                }
     }
     closedir($dh);
     }
    }
    return $filelist;
}

?>


■出力結果例
Array
(
[0] => /user/hoge/hogehoge/123.txt
[1] => /user/hoge/hogehoge/456.txt
[2] => /user/hoge/hogehoge/f/789.jpg
)



| プログラム | comments (0) | trackback (6407) |

 
PAGE TOP ↑


Warning: Unknown: Your script possibly relies on a session side-effect which existed until PHP 4.2.3. Please be advised that the session extension does not consider global variables as a source of data, unless register_globals is enabled. You can disable this functionality and this warning by setting session.bug_compat_42 or session.bug_compat_warn to off, respectively in Unknown on line 0