忍者ブログ
(過ぎたことは忘れちまえ)つらつら書くなり
カレンダー
05 2025/06 07
1 2 3 4 5 6 7
8 9 10 11 12 13 14
15 16 17 18 19 20 21
22 23 24 25 26 27 28
29 30
プロフィール
HN:
lenguasydialectos
性別:
男性
ブログ内検索
[424] [423] [422] [421] [420] [419] [418] [417] [416] [415] [414]
×

[PR]上記の広告は3ヶ月以上新規記事投稿のないブログに表示されています。新しい記事を書く事で広告が消えます。

この間わからなかったGoogleAPIの問題が解決したので覚書。

結局どういうことだったのかというと、ある特定の関数内で定義されたひとつの変数を使用して、無名関数を設定したインスタンスをforループ内でGMapのイベントリスナーに登録しても、最後の一つ以外はアクセス不能とみなされて削除(たぶんガーベッジコレクション)されてしまう。

つまり、
function createSomething(g_Map){
  var something;
    for(i=0;i<10;i++){
    something= new kind_of_thing(function(){do_something();});
    g_Map.addListener(something);
  //ここでまとめてグーグルマップにインスタンスを登録しようとする。
    }
  return;
}
はダメで、
function getSomething(){
  return new kind_of_thing(function(){do_something();});
}

function addSomethingToGMap(g_Map){
  for(i=0;i<10;i++){
    g_Map.addListener(getSomething());
  }
  return;
}
のように、関数を分割して、
リスナー登録関数に直接インスタンスを渡さないと機能しない。
らしい。(ようするにポインタの機能はないってこと)

解決してみれば何のことはない、記述の曖昧さが招いた単純ミスだった。
PR
この記事にコメントする
お名前
タイトル
文字色
メールアドレス
URL
コメント
パスワード
この記事へのトラックバック
この記事にトラックバックする:
忍者ブログ [PR]