木津川プチドライブ

昨日はid:hms_hermes と酒を飲んで次回の行き先を決定した。
で、どうやら彼は本日チャリドライブをするとのことで、それに触発されて、
私も原チャドライブをすることにする。

残念ながら最近は疲労困憊モードなんで、いくら寝てもねたらないくらいである。
そういうわけで、起きたら11:30だった。

で、そこから色々準備をしたり、最近買ったplaystation3でゲームをしていたら、
いつの間にか12:30になった。
playstation3linuxをインストールでき、cellアーキテクチャなので、並列プログラミングが
できそうなので、相当楽しそうである。でもせっかくなのでゲームも楽しみたいのである。

で、13:00に出発しようと思ったら、カメラの充電ができていなかった。
あと、ちょっと教育論文を書かないといけないので、それのためのTeXファイルを準備していると、
14:20になった。
で、14:30に出発しようと思ったら、なんとバイクの鍵がない。
スペアキーは作っていないので、バイクのそばに指しっぱなしではないかと確認をしたり
色々するが、結局発見できない。そういうわけで、30分程度費やす。
結局ポケットの中にあった。馬鹿まるだしである。

で、木津川へ行ってきた。思ったより早く着いて27分だった。
http://caitest.yh.land.to/googlemaproad/e3ed9e82eeeedc1557a1adf9fc4533fa.html

http://picasaweb.google.co.jp/linuxerjpn/200702
がそのときの写真である。

一旦渡りきってからてくてくとバイクを押した時の写真である。
やっぱり一人で撮っていたらとても怪しい人に見られかねないので、注意が必要である。

そういえば、橋に

なんてものがあったので、
今度 id:hms_hermes とチャリ & 原チャドライブをしてみてもよいかもしれない。

で、家に帰る間際に、母上がほしがっていたWii なるものと、Wii fitなるものを購入。
3万円なり。 PS3に比べるとずいぶんと安い。
父上に、最近 panasonic と L-10 という人を兄上と一緒にプレゼントしたので、

母上だけあげていないのはやや不公平かなと思っていたのである。

でも、私的にはWiiはあまり興味のあるものではなかったので、
そそくさと自分の部屋に行き、ちょっと久しぶりにWeblogを更新しようかという気持ちになったので、
本日の木津川の写真をアップロードすることにする。

で、ドライブしたからには、どのようなルートを通ったのかを記録にのこしたいというのが、
人の性であるので、Google Map APIを利用することにする。

http://blog.zuzara.com/?p=20

なんていう素晴らしいサイトがあった。
でもJSONって何?
で、JSON.phpで検索した。
http://www.doyouphp.jp/sample/sample_xml_json.shtml
でなんだwgetしてtar してるだけなのでただのライブラリか。
で、zuzaraさんのサイトのsave.phpを落として、完全にパクリンチョする。
ようやくできた。
zuzaraさんのsave.phpをそのままコピーしてもうまく動かないので注意。
15行目のunset をコメントアウトしても JSONクラスをnewしているところは、
JSON() からServices_JSON() に変更するとうまく行く。

ここに公開する。

http://ymlabo.ddo.jp/~ymlab/googlemappolyline

基本的にはzuzaraさんのサイトと同じ。
それに加えて、ftphttp://caitest.yh.land.to サーバにftpアップロードしてバックアップするサービスを
つけている。これで私の自宅サーバがダウンしてもOK。

ソースコードもつけよう

<?php
require_once("JSON.php");

$LOCALGOOGLEMAPKEY= "ABQIAAAATVQbVli7vDvzTg4_5vKTnBR2FLabsqNs_3dH0jpN0F1X3gJjGhTmpPJURiSPfAYVNEnVse_pASDtBQ";
$UPLOADGOOGLEMAPKEY = "ABQIAAAATVQbVli7vDvzTg4_5vKTnBTAzvHpTkecwT80KkZoMSBNW7F0chRa_EhYYoBie4Ku08ee9HZPJE9FKQ";

$json = new Services_JSON();

$input = $GLOBALS['HTTP_RAW_POST_DATA'];
$value = $json->decode($input);

$zoomlevel  = addslashes($_GET["zoomlevel"]);
$cX         = addslashes($_GET["cX"]);
$cY         = addslashes($_GET["cY"]);

foreach ($value as $key => $val) {
    foreach ($val as $k => $v) {
        if ($k != "x" && $k != "y") {
            //unset($value[$key][$k]);
        }
    }
}

$output = $json->encode($value);

ob_start();

?>
<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Strict//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-strict.dtd">
<html xmlns="http://www.w3.org/1999/xhtml" xmlns:v="urn:schemas-microsoft-com:vml">
  <head>
    <meta http-equiv="content-type" content="text/html; charset=UTF-8"/>
    <title>Google Maps Line Saver</title>
    <style type="text/css">
    v\:* {
      behavior:url(#default#VML);
    }
    </style>
    <script src="http://maps.google.com/maps?file=api&v=1&key=ABQIAAAATVQbVli7vDvzTg4_5vKTnBR2FLabsqNs_3dH0jpN0F1X3gJjGhTmpPJURiSPfAYVNEnVse_pASDtBQ" type="text/javascript"></script>
    <script type="text/javascript">
    //<![CDATA[

    function onLoad() {
        var map = new GMap(document.getElementById("map"));

        map.addControl(new GLargeMapControl());
        map.addControl(new GMapTypeControl());
        map.centerAndZoom(new GPoint(<?php print $cX?>,<?php print $cY?>), <?php print $zoomlevel?>);

        var points = <?php print $output?>;

        //  Add start/end markers in the map
        var marker = new GMarker(points[0]);
        map.addOverlay(marker);
        marker = new GMarker(points[points.length-1]);
        map.addOverlay(marker);
      
        map.addOverlay(new GPolyline(points));
    }

    //]]>
    </script>
  </head>
  <body onload="onLoad()">
    <div id="map" style="width: 800px; height: 600px"></div>
    <div id="message"></div>
  </body>
</html>
<?php

$str = ob_get_contents();
$filename = "tmp/".md5($output).".html";
$fp = fopen($filename, "w");
fwrite($fp, $str);
fclose($fp);
chmod($filename,0777);
$outputfile = md5($output).".html";
ob_end_clean();



//FTPのアップロード先用に、アップロード用のダミーファイルを作る.
$fpDummy = fopen($filename, 'r') or die;
$fpPut = fopen($filename.".dummy", 'w' ) or die;
while ( !feof($fpDummy) ) {
	$row = fgets( $fpDummy,1024 );
	fputs($fpPut, str_replace($LOCALGOOGLEMAPKEY, $UPLOADGOOGLEMAPKEY, $row));
}
fclose($fpPut);
fclose($dpDummy);



// FTPでアップロードする.
/*
$ftp_server	= getenv('LBOX_SERVER');
$ftp_user	= getenv('LBOX_USER');
$ftp_pass	= getenv('LBOX_PASS');
$base_dir	= getenv('LBOX_REMOTE');
$local_dir	= getenv('LBOX_LOCAL');
 */
$ftp_server	= 'FTPアップロード先のホスト';
$ftp_user	= 'FTPアップロード先のユーザ名';
$ftp_pass	= 'ここはパスワードね。';
$base_dir	= '/public_html/googlemaproad/';
$local_dir	= './';

$conn=ftp_connect($ftp_server);
if (!$conn) {
	die('接続できません' . "\n");
}

$result=@ftp_login($conn, $ftp_user, $ftp_pass); 
if (!$result) {
	die('ログインできません' . "\n");
}

ftp_pasv($conn, true);
ftp_put($conn, "googlemaproad/".md5($output).".html", $local_dir.$filename.".dummy", FTP_ASCII);
/*
ftp_put($conn, $base_dir . "/control.htm", $local_dir . "\control.htm", FTP_ASCII );
ftp_put($conn, $base_dir . "/logo.htm", $local_dir . "\logo.htm", FTP_ASCII );
ftp_put($conn, $base_dir . "/frame.htm", $local_dir . "\frame.htm", FTP_ASCII );
 */
ftp_close($conn);
$ftpfilename = "http://caitest.yh.land.to/googlemaproad/".md5($output).".html";
//echo $ftpfilename;
//echo $filename;
echo $outputfile;
?>