kayakaya日記
Feb 18, 2010 (Thu)
# Yahoo!地図プラグインを修正
IEで地図が表示されないバグ
ええっと、IEで動作確認してませんでした。JavaScriptで動いているというのに何て馬鹿なことでしょうか。今回のミスは、
r = ""
r << %Q|<script type="text/javascript">\n|
r << %Q|function defineYmapIds() {\n|
@ymap_container.each do |ymap_info|
r << %Q|var obj#{ymap_info[:ymapid]} = new YahooMapsCtrl("#{ymap_info[:ymapid]}", "#{ymap_info[:lat]}, #{ymap_info[:lon]}", #{ymap_info[:layer]}, YMapMode.MAP, YDatumType.WGS84);\n|
end
r << %Q|}\n|
r << %Q|if (window.addEventListener) window.addEventListener('load', defineYmapIds , false); // for Firefox\n|
r << %Q|if (window.attachEvent) window.attachEvent('onload', defineYmapIds); //for IE\n|
r << %Q|</script>|
の箇所で、YahooMapsCtrlクラスのオブジェクトを生成していますが、ここに問題がありました。YahooMapsCtrlを格納する変数名とYahooMapsCtrlに渡すidが同じ場合はIEでは地図が表示されません。「オブジェクトでサポートされていないプロパティまたはメソッドです」というエラーになります。仕方がないので変数にはプレフィッスめいたものを付けてました。
気付くまで小一時間ほどハマりましたね……。JS業界では常識的な問題なので恥しいたらありゃしませんが、もう何年もJavaScriptをいじってなかったのでごにょごにょさせてください。
Feedの場合はYahoo!地図へのリンクを貼る
Feedや携帯端末の場合は地図を埋め込むことができませんから、Yahoo!地図へのリンクを埋め込むようにしました。これで文脈が切れることがなくなりました。
なお、携帯デバイスであっても、iPhoneではJavaScriptが動作するため、画面の大きさに合わせた地図を表示させてます。ただし、現在のところ地図のスクロールや拡大縮小はできません*1。
*1 Yahoo!地図 APIライブラリの仕様でしょう
年間聖句(2010年)
あながたは皆、信仰により、キリスト・イエスに結ばれて神の子なのです。洗礼を受けてキリストに結ばれたあなたがたは皆、キリストを着ているからです。
新共同訳聖書ガラテヤの信徒への手紙3章26節You are all sons of God through faith in Christ Jesus. for all or you who were baptized into Christ have clothed youselves with Christ.
Galatians 3:26-27 (New International Version)
