2010-08-26 10 views
7

Dinamik işaretleyicilere ve dinamik infoWindows içeren bir google haritayı yüklemeye çalışıyorum. Temel olarak işaretleyicileri çalışıyorum. InfoWindows tıklanabilir ve kapatılabilir, ancak doğru içeriğe sahip değillerdir. Her infoWindow içeriğinin, sorgu döngüsünde bulunan son kayıt olduğu anlaşılıyor. Bu neden oluyor üzerindeGoogle Maps infoWindow'da yalnızca son kaydı yüklüyor

<script type="text/javascript"> 


//Load the Google Map with Options// 
    function initialize() { 
    var myLatlng = new google.maps.LatLng(42.48019996901214, -90.670166015625); 
    var myOptions = { 
     zoom: 6, 
     center: myLatlng, 
     mapTypeId: google.maps.MapTypeId.ROADMAP 
    } 
    var map = new google.maps.Map(document.getElementById("map_canvas"), myOptions); 

    //Begin query loop to set the markers and infoWindow content// 

    <cfoutput query="GetCoord"> 
    var LatLng = new google.maps.LatLng(#Client_Lat#, #Client_Lng#); 

    var marker = new google.maps.Marker({ 
     position: LatLng, 
     map: map, 
     title: "#Client_Company#" 
    }); 

    var contentString = '<p><b>#Client_Company#</b><br>'+ 
         '#Client_Address#<br>'+ 
         '#Client_City#,&nbsp; #Client_State# &nbsp; #Client_Zip#<br>'+ 
         '<a href="member_detail.cfm?ID=#Client_ID#">View Details</a>'; 

    var infowindow = new google.maps.InfoWindow({ 
     content: contentString 
    }); 

    google.maps.event.addListener(marker, 'click', function() { 
     infowindow.open(map,this); 

    }); 
    </cfoutput> 
    //End query loop 
    } 

</script> 

Herhangi bir fikir: Burada here oluyor kod neyin göreceksiniz? İşaretçilerinizi sadece bu her için aynı içeriği gösterecektir

google.maps.event.addListener(marker, 'click', function() { 
    infowindow.open(map,marker); 
}); 

o InfoWindow açıyoruz tıklandığında Kodunuzda

+0

FF3.6.8'de üç harita ma alırım sayfa kaynağına bağlı olarak doğru görünen rkers. Hangi tarayıcıyla ilgili sorunlarınız var? –

+0

Bu üç doğru harita işaretçileridir, ancak infoWindows'daki içeriğin farklı olması GEREKMEKTEDİR. Üçü de aslında GetCoord sorgumdaki son kayıt olan içerik. – knawlejj

cevap

11

Eğer statik

Sonra
var infowindow = new google.maps.InfoWindow({ 
    content: contentString 
}); 

ile yük infowindow içeriği ayarlamak Marker, bunu istemiyorsun.


Ne yapmak istediğiniz, içeriği olmayan (yalnızca işaretçiniz döngüsünden önce) tek bir intowowow oluşturmaktır. Daha sonra bir işaretçi tıklatıldığında, içeriği bilgi penceresine ekleyin ... ve ardından infowindow'u açın. Bu, kod satırlarını kaydedecek ve infowindow'un otomatik olarak kapanmasına neden olacaktır.

işaretçinizle kodunda bu

infowindow = new google.maps.InfoWindow(); 

eklemek infowindow.setContent görüşme

google.maps.event.addListener(marker, 'click', function() { 
    infowindow.setContent(contentString); 
    infowindow.open(map,marker); 

}); 
+0

Galen, yukarıdaki cevabımı yeni kod ile kontrol et. Teşekkürler! – knawlejj

+0

Çok teşekkürler, ben aynı sorunla karşı karşıyaydım –

+0

Bu benim için işe yaramadı. @ H.M.'in çözümü mükemmel bir şekilde çalıştı. Yukarıdaki yöntem, infowindow'u döngümdeki son işaretleyiciye tutmayı sürdürdü. –

36

ekleyin (halkalı) işaretçilerinizi oluşturarak işaretleyici nesneye bir özelliği olarak content ekleyin ve this.content kullanmadan önce Olay işleyicide:

+1

Tam olarak aynı durum vardı, bir JSA sonucunun bir AJAX isteğinden gelen standart JS döngüsü: (var i = 0; i firepol

+1

Firepol ile aynı dedi. Bu çekicilik gibi çalıştı, kabul edilen cevap yoktu. –

+2

Kabul edilen cevap benim için çalışmadı. Bu çözüm. Teşekkürler H.M. –