トップ «前の日記(Feb 16, 2010 (Tue)) 最新 次の日記(Feb 25, 2010 (Thu))» 編集

kayakaya日記


Feb 18, 2010 (Thu)

# Yahoo!地図プラグインを修正

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)