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

バージョンアップ&しばらく使っててほしいなーと思った機能を追加したものはこれ→(PukiwikiでGoogleMaps2

サンプル

[小物ツール]
マーカーの雛型作成

  • 金閣寺 - 足利義満の別荘。先日変な男が光ケーブルを接続するために車で突っ込んだ。東側の門は暇そうな警備員が守りを固めている。(長文サンプル)
  • 北野天満宮 - 菅原道真を祭ってる
  • 仁和寺 - 和尚が名物(嘘)
  • 龍安寺 - 石庭のうずまきが有名

こんな風に書く

&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=石庭のうずまきが有名);~

動作環境

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

ライセンス

BSD-Styleのライセンスです。

ダウンロード

GoogleがVersion1系をもうすぐ止めるらしいので、配布停止にします。
様々な機能を追加したVersion2系は PukiwikiでGoogleMaps2 で配布しています。

履歴

  • 1.1.0 2005-09-25 リリース
  • 1.1.1 2006-05-01 GoogleMaps API v2にしてみた。

インストール

  1. Google Maps API - Sign Upでキーを取得する。(無料)
  2. 別にやらなくてもいいけど、googlemaps.inc.phpのデフォの値(keyとか)を書き換えとくと後で楽。
  3. pluginディレクトリにgooglemaps.inc.phpとgooglemaps_mark.inc.phpとgooglemaps_icon.inc.phpをコピーする。

使い方

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のusetoolで表示中の中心座標のマーカーの雛型を作成できるので、usetool=1にしてプレビューモードでその雛型をコピペしながら書くと楽かもしれない。
    • デフォルトの値を変えたいとか、もう少しあれをなんとかしたい場合はソースを勝手に改造して使ってください。
    • インライン型しかありません(#hoge書式のは無い)
    • googlemaps_markの第一、第二引数以外はすべて一応省略可能で、引数の順番もどうでもいいです。
    • googlemapsのkeyオプションはソースファイルに直接書いて省略した方が見やすい。

追記 2006-03-14

しばらくメンテをほっといたら座標系がいつのまにか変っていたので次のような
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

座標の取得方法いろいろ

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

今後の予定

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

コメントをどーぞ

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

CategoryJavaScript CategoryGoogle CategoryPukiwiki


|New|Edit|Freeze|Diff|Backup|Upload|Copy|Rename|
Last-modified: 2007-02-01 (Thu) 11:08:00 (471d)
HTML convert time: 0.377 sec.