2011-07-11 20 views
-1

リスナーをクリックしなくても起動時に起動するように見えますが、マーカとインフォボックスをまとめてリンクしたいと思っています。 (ボックスを閉じた後で)マーカをクリックすると、何も起こりません。Google Maps API V3、Listenerが異常に動作しています

//Load Markers 
function LoadData() { 
    //Space Reservation 
    var site_arr = new Array(); 
    var point_arr = new Array(); 
    var pasta_arr = new Array(); 
    //Load All Information 
    point_arr = [new google.maps.LatLng(38.629343,-9.191592), 
       new google.maps.LatLng(38.649187,-9.189205)]; 

    site_arr = ["AAA","BBB"]; 

    pasta_arr = [1,2]; 

    //Create Markers and Set InfoBoxes 
    for(var i = 0 ; i < site_arr.length ; i++){ 
     marker_arr[i] = new google.maps.Marker({ 
       position: point_arr[i] 
       ,map: map 
       ,title: site_arr[i] 
       }); 

      window_arr[i] = new InfoBox({ 
      content: site_arr[i] 
      }); 
      google.maps.event.addListener(marker_arr[i], 'click', function(i){ 
      window_arr[i].open(map,marker_arr[i]); 
      }(i)); 
      } 
    return 0; 
} 

誰でも何が起こっているのか考えていますか?

問題を解決しました。他人には便利かもしれないので、投稿しています... ありがとうございました!

//ロードマーカー 関数loaddataの(){// スペース予約 するvar site_arr =新しいアレイ(); var point_arr = new Array(); var pasta_arr = new Array(); //すべての情報を読み込む point_arr = [新しいgoogle.maps.LatLng(38.629343、-9.191592)、 新しいgoogle.maps.LatLng(38.649187、-9.189205)];

site_arr = ["AAA", 
      "BBB"]; 

pasta_arr = [1,2]; 

//Create Markers and Set InfoBoxes 
for(i = 0 ; i < site_arr.length ; i++){ 
    marker_arr[i] = new google.maps.Marker({ 
     position: point_arr[i] 
     ,map: map 
     ,title: site_arr[i] 
     ,icon: "http://labs.google.com/ridefinder/images/mm_20_red.png" 
    }); 

    marker_arr[i]._info = new InfoBox({ 
     content: pasta_arr[i]; 
    }); 
    attachListener(marker_arr[i]); 
} 
return 0; 

}

関数attachListener(マーカー){ google.maps.event.addListener(マーカー、 'クリック'、関数(){ marker._info.open(マップ、マーカー); }); return 0; }

答えて

0

リスナーに関数を追加するのではなく、関数の値を追加します。情報ウィンドウは、リスナーのfunction(i)iに評価するため、LoadData()の間に表示されます。 2番目の問題は、評価を削除しても、リスナーの呼び出し中に意図したインデックスiが取得されないことです。リスナーが独自に発射されたが、それでもあなたの提案がどちらか動作しません、今どんなインフォボックスをクリックするとマーカーが情報で表示される理由を、私は今理解して

marker_arr[i]._info = window_arr[i]; 
google.maps.event.addListener(marker_arr[i], 'click', function() { 
    var marker = this; 
    marker._info.open(map, marker); 
}); 
+0

:正しい方法のようなものです最後のマーカの位置、最後のマーカの位置! – user838681

+0

私の最初の答えは示唆でした。私は今それが完全に機能するように改善しました。 – Jiri

関連する問題