最近[[東神戸の書店情報]]がごちゃごちゃしてきたので見やすい地図を張りたくなった。~
Pukiwikiのプラグインで何かありそうだと思って探したけど、無かったので自分で書いてみた。~
%%GoogleMapsはまだベータ段階でAPIも流動的なので%%(ver2で固まった模様)%%今後もそのまま使えるかどうかは不明だが%%(ver1系は将来的に廃止されるらしい。)、一応できるよーということで。。。v2系に対応して1.1.1にしてみた(2006-05-01)~
~
バージョンアップ&しばらく使っててほしいなーと思った機能を追加したものはこれ→([[PukiwikiでGoogleMaps2]])~
''v3対応の最新版はこちらへどうぞ [[PukiwikiでGoogleMaps3]]''~


***サンプル [#k9c7fc1f]
&googlemaps(width=300px, height=200px, small=1, maptype=1, usetool=1);

&googlemaps_icon(神社, http://reddog.s35.xrea.com/img/googlemaps/mm_sample.png, http://www.google.com/mapfiles/shadow50.png, 20, 34, 37, 34, ianchorx=10, ianchory=34, sanchorx=10);

-&googlemaps_mark(135.72924826268591554, 35.03937960872038611, title=金閣寺, caption=足利義満の別荘。先日変な男が光ケーブルを接続するために車で突っ込んだ。東側の門は暇そうな警備員が守りを固めている。(長文サンプル), image=http://reddog.s35.xrea.com/img/googlemaps/img_kinkaku.jpg);~
-&googlemaps_mark(135.73510610251286543, 35.03108745526382363, title=北野天満宮, caption=菅原道真を祭ってる, icon=神社);~
-&googlemaps_mark(135.71296373262029438, 35.02872397300313933, title=仁和寺,caption=和尚が名物(嘘));~
-&googlemaps_mark(135.71834889613717445, 35.03447795362604991, title=龍安寺,caption=石庭のうずまきが有名);~

こんな風に書く
 &googlemaps(width=300px, height=200px, small=1, maptype=1);
 
 &googlemaps_icon(神社, http://reddog.s35.xrea.com/img/googlemaps/mm_sample.png, http://www.google.com/mapfiles/shadow50.png, 20, 34, 37, 34, ianchorx=10, ianchory=34, sanchorx=10);
 
 -&googlemaps_mark(135.72924826268591554, 35.03937960872038611, title=金閣寺, caption=足利義満の別荘。先日変な男が光ケーブルを接続するために車で突っ込んだ。東側の門は暇そうな警備員が守りを固めている。(長文サンプル), image=http://reddog.s35.xrea.com/img/googlemaps/img_kinkaku.jpg);~
 -&googlemaps_mark(135.73510610251286543, 35.03108745526382363, title=北野天満宮, caption=菅原道真を祭ってる, icon=神社);~
 -&googlemaps_mark(135.71296373262029438, 35.02872397300313933, title=仁和寺,caption=和尚が名物(嘘));~
 -&googlemaps_mark(135.71834889613717445, 35.03447795362604991, title=龍安寺,caption=石庭のうずまきが有名);~


***動作環境 [#eecba4da]
Pukiwiki1.4.6をEUC-JPで使っています。~
DTD宣言でXHTMLをHTML 4.01 Transitionalとして宣言してあります。~
FirefoxとIEで超適当に動作確認。動かない環境がありそうな気がする。

***ライセンス [#f287e1ae]
BSD-Styleのライセンスです。

***ダウンロード [#y828840e]
//http://reddog.s35.xrea.com/software/googlemaps.inc.php.zip
GoogleがVersion1系をもうすぐ止めるらしいので、配布停止にします。~
様々な機能を追加したVersion2系は [[PukiwikiでGoogleMaps2]] で配布しています。~

***履歴 [#a7e76314]
-1.1.0 2005-09-25 リリース
-1.1.1 2006-05-01 GoogleMaps API v2にしてみた。
 
***インストール [#q8c3db97]
+[[ Google Maps API - Sign Up:http://www.google.com/apis/maps/signup.html]]でキーを取得する。(無料)
+別にやらなくてもいいけど、googlemaps.inc.phpのデフォの値(keyとか)を書き換えとくと後で楽。
+pluginディレクトリにgooglemaps.inc.phpとgooglemaps_mark.inc.phpとgooglemaps_icon.inc.phpをコピーする。

***使い方 [#z28fb4a0]
googlemapsで地図を表示して、googlemaps_markでマーカーをつけます。~
マーカーで自分で作ったアイコンを使いたいときはgooglemaps_iconでアイコンを定義します。
-書式(オプションを省略するとデフォの値が用いられます)
 &googlemaps(?option=value, ...?);
 &googlemaps_mark(x, y ?, option=value, ...?);
 &googlemaps_icon(name, image, shadowimage, imagesize_w, imagesize_h, shadowsize_w, shadowsize_h ?, option=value, ...?);

-オプション
--googlemaps
---''key''     Googleから取得したKey
---''width''   横幅。スタイル指定。ex. 640px, 100%など。
---''height''  縦幅。スタイル指定。
---''cx''      中心点
---''cy''      中心点
---''zoom''    倍率
---''small''       小さい拡縮コントロールを使う(0 or 1)
---''maptype''     MapType選択コントロール(衛星写真の切替ボタン)の表示(0 or 1)
---''formatlist''  マーカーリストの書式(html文字列)
---''formatinfo''  マーカーのフキダシの書式(html文字列)
---''alink''       マップ上のinfoWindowと本文中のテキストをリンクさせる(0 or 1)
---''usetool''     いまのとこマーカーの雛型を出力するやつだけ。

formatlistとformatinfoは%title%と%caption%と%image%の文字列を各マーカーのそれに置き換える。~
例文:
 <b>%title%</b> - %caption%
 <b>%title%</b><br><div style='width:200px;'><span style='float:left;'>%image%</span>%caption%</div>

--googlemaps_mark
---''title''   マーカーの名前
---''caption'' マーカーの説明
---''image''   画像
---''icon''    マーカーのアイコン(googlemaps_iconでiconを事前に作成しておく)
---''nolist'' 地図以外のマーカーリスト(上の例でいえば地図の下のやつ)に出力しない。(0 or 1)

--googlemaps_icon~
---''ianchorx'' アイコンの位置調整
---''ianchory'' アイコンの位置調整
---''sanchorx'' フキダシの位置調整
---''sanchory'' フキダシの位置調整

-アイコンの作成~
googlemaps_iconの第一引数でアイコンの名前を指定します。~
以下の引数でアイコンと、アイコンの影のURLとそれぞれのサイズを指定します。~
アイコンと影は左上の座標を原点にして重ねて表示されます。~
オプションのianchorx, ianchoryはアイコンと影の表示位置を調整します。デフォルトでは左上がマーカーの座標になるので、上の例のように画像の下の真ん中あたりを座標に合わせたいときは、ianchorx = アイコンの横幅/2, ianchory = アイコンの縦幅でよいです。省略された時は0になります。~
sanchorxとsanchoryはマーカーをクリックしたときに表示されるフキダシの位置調整をします。デフォルトではアイコンの左上に付きます。上の例では上辺の真ん中に来るように調整してます。省略された時は0になります。~

-その他
--googlemaps_markは第一引数がx,第二引数がy座標で省略不可。~
座標は適当にブックマークレットでも書いて手で調べるしかないような。~
//公式のGoogleMapsでは
// javascript:void(prompt(%22GoogleMaps中心位置%22, _m.map.getCenterLatLng()));
//このようなブックマークレットで中心座標を取得することができる。
googlemapsのusetoolで表示中の中心座標のマーカーの雛型を作成できるので、usetool=1にしてプレビューモードでその雛型をコピペしながら書くと楽かもしれない。
--デフォルトの値を変えたいとか、もう少しあれをなんとかしたい場合はソースを勝手に改造して使ってください。
--インライン型しかありません(#hoge書式のは無い)
--googlemaps_markの第一、第二引数以外はすべて一応省略可能で、引数の順番もどうでもいいです。
--googlemapsのkeyオプションはソースファイルに直接書いて省略した方が見やすい。

***追記 2006-03-14 [#rc2aab53]
しばらくメンテをほっといたら座標系がいつのまにか変っていたので次のような~
TclスクリプトでPukiwikiのドキュメントを修正した。Pukiwikiのプラグインは~
何も変更していない。mpexprは任意桁数で計算できるライブラリで、ちょっと~
Tclのデフォでの精度に不安があったので使ってみた。それだけ。
 package require Mpexpr
 set str [read stdin]
 
 proc trav {x y} {
 	set x [mpexpr $x - $y * 0.000046038 - $x * 0.000083043 + 0.010040]
 	set y [mpexpr $y - $y * 0.00010695  + $x * 0.000017464 + 0.00460170]
 	return [list $x $y]
 }
 proc fmt {s1 s2 s3 s4} {
 	foreach {s2 s4} [trav $s2 $s4] break
 	return $s1$s2$s3$s4
 }
 proc conv {str} {
 	set q {(\&googlemaps_mark\()(\d*\.\d*)([^\d]*,[^\d]*)(\d*\.\d*)}
 	foreach {s0 s1 s2 s3 s4} [regexp -inline -all -- $q $str] {
 		set str [string map [list $s0 [fmt $s1 $s2 $s3 $s4]] $str]
 	}
 	return $str
 }
 puts [conv $str]
 exit


***座標の取得方法いろいろ [#z3e49493]
-googlemapsプラグインにusetool=1オプションを付けると、サンプルのように[小物ツール] マーカーの雛型作成という項目が出るので、これをクリックすると現在の地図の中心点のマーカーの雛型がでるのでコピペする。
-ブックマークレットを使う。
たとえば次のブックマークレットでPukiWiki上に表示してる地図の座標を取得できます。
 javascript:void(prompt('中心座標', "cx=" + googlemaps.getCenter().x + ", cy=" + googlemaps.getCenter().y) );
-その他のサイトから座標を取得する。~
注意:このプラグインはGoogleMaps API ver1系を使っています。GoogleLocalや、その他のver2系の地図の座標はx,yが逆になっているので注意してください。


***今後の予定 [#ce7626d1]
-バグ出し
-ソースをきれいに
-%%いくつか機能追加(?)%% 大体自分が欲しい機能は実装した気がする。
-%%地図の日本語化(可能かどうか調べる)%% なんかしらんけどできるようになった。
-%%仕様の再考%%

***コメントをどーぞ [#q6776732]
-Safariでも動いております。 -- [[koyama]] &new{2005-10-04 15:39:37 (火)};
-nao-ponさんのPukiWikiModでは動きません。動くようにする方法はありますか? -- [[Harry]] &new{2006-02-01 01:37:11 (水)};
-すみません、PukiWikiModでも動きました。API間違ってました。 -- [[Harry]] &new{2006-02-01 23:23:27 (水)};
-吹き出しの下の辺がずれちゃう(?)のはどうしたらいいでしょう? -- [[まさ]] &new{2006-04-11 15:37:41 (火)};
--どうずれちゃう(?)のかわからないんですが、丁度今API v2に対応しようといじってるところなのでバグなら直したいのでもっと情報下さい。ていうか一行コメント狭すぎですかね・・・ -- [[reddog]] &new{2006-04-12 11:37:56 (水)};
-ごめんなさい。いつのまにか直っていました・・。っていうか自分が悪いのかも。ところで、&googlemaps_iconの情報とかをgooglemaps.inc.phpに取り込めないでしょうか?他の方もいじるので、設定関連は隠したいのですが。 -- [[まさ]] &new{2006-04-12 12:00:29 (水)};
-それとバージョンアップされるのであればもうひとつリクエストしていいですか?マークされているところでなくて、「関東」とか「九州」とかのボタンを押すと、その場所に移るようにできますでしょうか?透明のマーカー作って移すっていう方法もあると思うのですが、倍率を場所毎に設定したいんです。 -- [[まさ]] &new{2006-04-15 10:12:19 (土)};
- マーカーなしのリンクほしいですね! -- [[siva]] &new{2006-04-25 (火) 11:29:02};
- バージョン2の方で実装されていたのですね!あちらに乗り換えます♪ -- [[siva]] &new{2006-04-25 (火) 11:39:56};
- 座標系はどこで取るのがお勧めですか?Mapfanで取ったらずれとりました。&worried;&br;もしくは、表示したGoogleMapより取得の方法はありませんか? -- [[Clip]] &new{2006-04-28 (金) 10:43:38};
-- 座標の取得方法についての項目を追加しました。Mapfanの座標はGooglemaps用に変換しないと使えません。 -- [[reddog]] &new{2006-04-29 (土) 02:20:49};
----
[[CategoryJavaScript]] [[CategoryGoogle]] [[CategoryPukiwiki]]

|New|Edit|Diff|History|Attach|Copy|Rename|
HTML convert time: 0.004 sec.