Googleマップのマーカーは、自作のものを使うことができる。このとき、フルカラー半透明pngを使える。というか、マーカーの影画像も指定するのだけど、こちらは半透明にしとかないとかっこ悪すぎだ。
で、このマーカーに好きな文字を入れて動的生成したい。というか数字ぐらい入れさせろ。
↑ここに紹介されているやつとか。
画像URLを
numbered_marker.php?image=001.png&text=99
とかやると、PHPのGDモジュールを使って文字をpng画像に合成してくれると。
しかしだ。これが、IE6だと透明部分が透明にならないんである。なんか灰色になる。
原因を調べたら話がややこしいのでまとめとこう。
1.まず大事な話だが、
いつのまにかIE7は半透明pngに対応してる
んである。上の問題で背景が透明にならないのはIE6以下だけだったのはそのせいだ。しかし。
2.Googleマップのマーカーが透過してるのはブラウザの機能ではない
だって、本家Googleマップで、マーカーの周りが灰色になってるなんてことはないのだ。
つまりこれは、実はブラウザがどうとかいう問題じゃないハズで。
要するにGoogleマップが、マーカー画像をpngと認識してないんじゃないか?
Content-Typeは出力してるがなあ。
というわけで、上の画像URLをこうしてみた。
numbered_marker.php?image=001.png&text=99&.png
透明になったし(笑)。
どうやら、画像URLの最後が「.png」だったらアルファレベル使って透過合成、みたいなことをやってるらしい。
つまりどちらかといえば、拡張子が.pngじゃないのに透過できてるほうが偶然だったと?(笑)
ややこしいことして無理やりpngを透過させる方法もあるようだし、そういうのも調べちゃったけど。実はこんなしょーもない対策があったという話。なんだかなあ。
[2008.03.11 01:34]Namany :
そういうハックもいいけど、そういう仕様なら本来はこう書くべきじゃない?
numbered_marker.php?text=99&image=001.png
[2008.03.11 01:44]てらしま :
あたしかに(笑)
まあじっさいには、画像ファイル名を直接渡すなんて怖くてできないから、このままの仕様で使うことはないと思うのでハックが必要な場面も多そうですが。