openInfoWindowHtml()の後にタイムラグ?

ブログ | 2008/8/18 20:24
どうもマッピングがうまくいかない報告がちらほら。
僕は、吹き出しの中のフォームからマッピングする方式を採用しているのだけれど、
marker.openInfoWindowHtml('<form name="mfrm"><input type="text" name="lat" /><input type="text" name="lng" /></form>');
var point = marker.getPoint();
var f = document.mfrm;
f.lat.value = point.y;
f.lng.value = point.x;
こんな感じだったとして、うまくフィールドに値が入らない。
吹き出しが開くタイミングにワンクッション入るためか、document.mfrmがないのだ。(7月中旬まで問題なく動いてたけど)

で、最初の対処はsetTimeoutを使って、
marker.openInfoWindowHtml('<form name="mfrm"><input type="text" name="lat" /><input type="text" name="lng" /></form>');
setTimeout(function(){
 var f = document.mfrm;
 if(f){
   var point = marker.getPoint();
   f.lat.value = point.y;
   f.lng.value = point.x;
 }
},300)

んが、300ミリ秒みたいな強制タイムラグでは、だめなケースがあるようだ(遅いマシンとか)。で、
marker.openInfoWindowHtml('<form name="mfrm"><input type="text" name="lat" /><input type="text" name="lng" /></form>');
var int = setInterval(function(){
 var f = document.mfrm;
 if(f){
   var point = marker.getPoint();
   f.lat.value = point.y;
   f.lng.value = point.x;
   clearInterval(int);
 }
},200)

こうしてみた。どうだろう。様子見中。
▼追記 2008/8/18 20:48
このエントリー、IEでサイドバーが落ちる。
縮小 拡大

ログインしておくと、後で編集が可能です。

Rottel内コンテンツ

ユーザー一覧

Rottelとは?
利用規約
開発飲料
利用者の声
ヘルプ
close