ラベル JavaScript の投稿を表示しています。 すべての投稿を表示
ラベル JavaScript の投稿を表示しています。 すべての投稿を表示

2011年4月14日木曜日

[TIPS]福島県の市区町村データ

Google Fusion Tablesに福島県の市区町村のデータをアップしました。
「Fukushima Pref. City Boundary」

情報元は、国土交通省の国土数値情報データです。
一応、Publicで公開しています。

こんな感じ。


JavaScriptから指定する場合は、以下のコードを実装するだけ。
var layer = new google.maps.FusionTablesLayer(697854, {suppressInfoWindows:false});
layer.setMap(map);




Filterかけると、特定の市or町だけ表示できます。
※下は会津若松市でフィルタかけています

JavaScriptではQueryを指定します。

var layer = new google.maps.FusionTablesLayer(697854, {query: "SELECT geometry FROM 697854 WHERE description = 07202" suppressInfoWindows:false});
layer.setMap(map);



※複数の市を指定するのはどうすればよいんだろう・・・。
"SELECT geometry FROM 697854 WHERE description = 07202 OR description = 07214"

"SELECT geometry FROM 697854 WHERE description IN( 07202 , 07214)"

ではできなくて・・・。







だれか教えてm(__)m

2011年4月9日土曜日

[TIPS]JavaScriptから他ドメインのファイルにアクセスする方法

(21:04)
長いタイトルになってしまいましたが・・・。
内容も長い・・・。

JavaScriptを使うと、
自ドメインのファイルにはアクセスできますが、
他ドメインのファイルにはアクセスできない。
という仕様があります。(最近知ったけど)

それで今回は、
phpを呼び出して、
その中でファイル取得して、
JavaScriptで処理する。
という方法をやってみました。

参考にしたURLはこちら。(大変助かりました、ありがとうございます)
必ず得するかもしれない一言」さんの「javascriptからphp呼び出し」という記事。
http://blogs.yahoo.co.jp/koga2020/49620713.html


用意するのは、HTMLとPHPファイル。

今回は起動(body onload)時に処理を行うようにしています。
※ボタン用意してクリックしたらという動作も可能

1.【html】<body onload>でgetData()呼び出し
2.【html】getData()内で値を設定し、実行
  →php実行
3.【php】callback名、引数名を取り出し
4.【php】他ドメインのtxtを取得
5.【php】改行コードを変換
(変換しないとエラーになります)
6.JavaScriptを実行する処理を設定($htmlに値をセット)

ココが肝心なところ
parent.'.$callback.'("'.$data.'");

parentは現在のフレームから他フレームを参照します。
現在のフレームは、【html】"getdata_Frame"のこと
他フレームは、【html】"form1"のこと


つまり、"form1""callback"を呼び出しますよの記述

7.【php】echoで$htmlを出力(実行)
8.【php】終了
9.【html】"form1""callback"に設定されたgetdata_callback()を呼び出し
10.【html】getdata_callback()で引数(newdata)にtxtの取得結果が設定されている


以下は参考ソースです。(動作確認してないので、動かなかったらごめんなさい)


index.html
<html>
<head>
<script type="text/javascript">
<!--
// php実行後に呼び出される関数を作成
function getdata_callback( newdata ){
//php実行後の処理を記述
}

// php呼び出す関数を作成
function getData(){
    // php実行後に呼び出される関数を設定
document.getElementById("form1").callback.value = "getdata_callback";
    // php実行時に値を渡す場合は設定
document.getElementById("form1").arg1.value = "値は任意";
    // php呼び出し
document.getElementById("form1").submit();
}


// 起動時に呼び出す関数を作成
function initialize() {

    // phpを呼び出す関数をコール
getData();
}
-->
</script>
</head>
<!-- php呼び出しのイベント。body onloadでなくても良い -->
<body onload="initialize()">
<!-- php呼び出し用のform。
   id    :任意
   action :用意したphpファイルを設定
   target :phpからform1のcallbackにアクセスするために必要
   method:phpから結果を受け取るので、必ず"post"を設定
 -->
<form id="form1" action="getdata.php" target="getdata_Frame" method="post">

<!-- php実行後に呼び出す関数名を格納する用 -->
<input id="callback" name="callback" type="hidden">

<!-- php実行時の引数を格納する用 -->
<input id="arg1" name="arg1" type="hidden">
</form>
<!-- phpからform1のcallbackにアクセスするために必要 -->
<iframe id="getdata_Frame" name="getdata_Frame" style="width:0;height:0;visibility:hidden" tabindex="-1"></iframe>
</body>
</html>

getdata.php

<?php
//JavaScriptから受け取った値の取り出し
$callback = $_POST["callback"];
$arg1 = $_POST['arg1'];

//アクセスするファイルを設定
$path = "http://www.xxxx.co.jp/zzzz.txt";
//ファイルの内容を取得
$temp = file_get_contents($path);

//改行コードを変換(CR削除)
$data = str_replace("\r",'',$temp);

//改行コードを変換(LF→\n)
$data = str_replace("\n",'\n',$data);

//JavaScriptのコードを呼び出し
//取得結果($data)はcallbackの引数に設定
//これで値を受け渡せる
$html = '<script language="JavaScript">

parent.'.$callback.'("'.$data.'");
</script>
';
echo $html;
//php終了
exit;
?>

(22:28)

2011年4月5日火曜日

[TIPS]Google Fusion Tables

GoogleさんにFusion Tablesというサービスがありました。
http://www.google.com/fusiontables/Home

簡単に言うとデータテーブルを作れて、公開したりできます。

作ったデータは、
Map表示したり、時系列に表示したり、いろいろできるようです。

とりあえず、
Mapに表示する方法を試してみました。
といってもスクリプトに3行追加するだけ。


var layer = new google.maps.FusionTablesLayer(テーブルのID);
layer.setQuery("SELECT Location FROM テーブルのID");
layer.setMap(map);

※テーブルIDは、Fusion Tables の「File」-「About」にある、IDを記述します。

表示する内容やデータは、事前にViewを作成して、そのIDを指定すればよいです。


2011年4月2日土曜日

[TIPS]Google Maps API

(10:45)
SafeAreaChecker for Web」を作るときの技術メモです。

Google Maps API には、いろんな種類があります。

・Maps JavaScript API
・Mpas API for Flash
・Google Earth API
・Static Maps API
・Webサービス
・Maps Data API

それぞれ特徴があります。詳細は下記を参照ください。
Google Maps API ファミリー

今回はその中から、「Maps JavaScript API」を選んでます。
Maps JavaScript APIには、バージョン2と3がありますが、バージョン2は廃止されました。
今後は、バージョン3に移行していく必要があります。
(インターネット上にはまだまだバージョン2のコンテンツが存在してますが。)

という訳で、Maps JavaScript API V3で作りました。


・Mapを表示する[参考URL:Google]
・Mapにマーカーを表示する[参考URL:Google]

・Mapに画像を重ねる(グラウンドオーバーレイ)[参考URL:Google]

・Mapにラインを引く[参考URL:Google]

・Mapに円を描く[参考URL:Google]

・Mapのイベントを追加する[参考URL:Google]

・情報ウィンドウを表示する[参考URL:Google]

・地点間の直線距離を計測する

Math.round(Math.sqrt(Math.pow((latlng1.lat()-latlng2.lat())*111, 2) + Math.pow((latlng1.lng()-latlng2.lng())*91, 2)), 1);
・初回表示時に現在地を取得する[参考URL:Google]

・ブラウザの言語設定取得する[参考URL:@masuidrive blogさん]


デバッグは、”mozilla FireFox”が便利。(Firebugというアドオン入れる)

動作確認は、Goole Chrome、mozilla FireFoxでしかしてません。。(IE未確認)

(11:45)