2011-07-11 13 views
1

選択した国と日付に基づいて、結果リストがマップに表示されます。それらのマーカーでhtmlデータの配置がうまくいけば、問題は重複したマーカーでケースを処理することです。Googleマップの情報ウィンドウのコンテンツを変更

重複しているものを確認する方法を見つけましたが、すでに存在する情報ウィンドウのコンテンツを変更できるようにしたいと考えています。同じ場所にある既存のマーカーに複製マーカーの内容を追加することができます。

問題は、既存の情報ウィンドウのデータに重複してアクセスするための正しい方法を見つけることができないことです。

警告(infoWindow.getContent());を実行すると、「不定」になります。私もmarkers [i] .getContent()を試しましたが、それも何もしませんでした。

以前に追加されたマーカーの情報にどのようにアクセスして、getContent()でコンテンツを取得し、それに重複するデータを追加するかについてのアイデアや提案はありますか?

var marker = new google.maps.Marker({ 
    map: map, 
    position: latlng 
}); 

for (var i=0; i<markers.length; i++) { 
    if (markers[i].getPosition().equals(marker.getPosition())) { 
     alert('duplicate found'); 
     alert(infoWindow.getContent()); 

    } else { 
     google.maps.event.addListener(marker, 'click', function() { 
      infoWindow.setContent(html); 
      infoWindow.open(map, marker); 
     }); 
    } 
} 

答えて

2

私はあなたが望むものを正確に行うことはできないと確信しています。

私が知っていて、APIで見ることができる限り、インフォウインドウまたはマーカーはお互いについて何も知っていません。特定のマーカーをクリックしたときに表示される情報ウィンドウを知る唯一の方法は、google mapsイベントハンドラです。

問題を解決するには、すべての情報ウィンドウを配列に格納し、別の配列のマーカーを使用して、対応するマーカーとインフォボックスのインデックスが同じであることを確認します。

マーカとインフォウインドウの両方を保持できるように、独自のオブジェクトを定義する方法もあります。

どのようにしても、マーカー配列をループして重複したマーカーを見つけ、説明した2つのシナリオのいずれかを使用して対応する情報ウィンドウを取得する必要があります。それはちょっとばかげているようですが、私はそれを行う別の方法を知らない。

+0

はいこれは今日の解決策です。基本的に、情報を更新する必要があるたびにループします。 kmlのデータをチャートやフュージョンテーブルに保存してinfowindowのコンテンツを追加するための条件を設定することで "周り"に行くことができます – efwjames