イメージマップ
特徴
- NCSA 製のイメージマッププログラムと同等の機能。
- perl としては珍しく(というか、フリーの CGI としては珍しく)poly もサポート。
- HTMLのマップタグでの circle の書式もサポート。これは自動的に判別されます。
必要なファイル
使用法
imagemap.cgi (イメージマッププログラム)と mapfile.map(マップファイル)の両方とも cgi というディレクトリに入れたとします。その場合、リンク元のHTMLファイルには以下のようにタグを書きます。ただし、パスは普通のリンクと同じように各々の環境に合わせて書き換えてください。
| <a href="cgi/imagemap.cgi"><img src="画像の名前" ISMAP border=0></a> |
mapfile.map
マップファイルの書き方を説明します。書式は以下の通りです。
| 書式(例)と 説明 |
|
| point http://www02.so-net.ne.jp/~iida/ 120,48 |
| 指定した座標(この場合は x=120, y=48 )でのみ飛ばせます。でも意地悪ですね...。 | |
| circle http://www02.so-net.ne.jp/~iida/ 120,150 120,200 |
| NCSA の Imagemap と同様に最初の座標(120,150)が中心座標で、次の座標(120,200)が円上の任意の点という指定の仕方。つまりこの場合だと(120,150)を中心として半径 50 の円という事です。 |
|
| circle http://www02.so-net.ne.jp/~iida/ 120,150 50 |
| HTML のマップタグと同様に最初の座標(120,150)が中心座標で、次の数値(50)が半径という指定の仕方。私としてはこの方が分かりやすくて好きです。 |
|
| rect http://www02.so-net.ne.jp/~iida/ 200,150 300,400 |
| 最初の座標(200,150)が左上の点で、次の座標(300,400)が右したの点となるような長方形です。 |
|
| poly http://www02.so-net.ne.jp/~iida/ 200,100 220,150 280,250 350,150 230,45 |
| ポリゴンです。これらの座標を左から順番に結んだ多角形の内側が飛ばす範囲になります。当然最後の点と最初の点も結ばれて閉じた多角形となります。ただし、ねじれている場合のチェックはありませんので書く際は注意してください。なお、点の個数には制限はありません。 |
|
| default http://www02.so-net.ne.jp/~iida/ |
| 上記のいずれにもあてはまらない場合に飛ばす場所です。なお、imagemap.cgiの中にもdefaultを設定できる場所がありますが、マップファイルにも書かれている場合、マップファイルの方が適用されます。 |
たとえば、このページの一番下にあるリンクバーの場合、以下のように書きます。なお、同じ座標で別の部分へのリンクが設定されてしまった場合、mapfile.mapの上に書かれている方が優先されます。
rect http://www02.so-net.ne.jp/~iida/photo/index.htm 0,0 109,34
rect http://www02.so-net.ne.jp/~iida/index.htm 109,0 217,34
rect http://www02.so-net.ne.jp/~iida/ 217,0 327,34
rect http://www02.so-net.ne.jp/~iida/new.htm 327,0 433,34
rect http://www02.so-net.ne.jp/~iida/cgiroom/index.htm 433,0 540,34
rect http://www02.so-net.ne.jp/~iida/pipe/index.htm 0,35 109,70
rect http://www02.so-net.ne.jp/~iida/link.htm 109,35 217,70
rect http://www02.so-net.ne.jp/~iida/chem/index.htm 217,35 327,70
rect http://www02.so-net.ne.jp/~iida/waseda100net/index.htm 327,35 433,70
rect http://www02.so-net.ne.jp/~iida/html/index.htm 433,35 540,70
default http://www02.so-net.ne.jp/~iida/
|
FAQ
Q: perl -c imagemap.cgi では問題が無いのに、うまく動作しません
A:まず、「良くある質問とその答(FAQ)」の内容を試して見てください。それでもだめな場合、このプログラム特有のよく起きる問題として以下の事を確かめてください。
- マップファイルは英数字半角文字で書いていますか?
- マップファイルに書かれている文字にスペルミスはありませんか?
- マップファイルはきちんと読み込まれていますか?
|