2013-12-18 29 views
0

嗨,我是新來的JavaScript。在這種情況下,訪問json對象的最佳方式是什麼?「js」,以便我可以使每個標記具有不同的內容?現在,每個標記顯示相同的密鑰值(最後一個鍵值)谷歌地圖JavaScript閱讀JSON在for循環

js = JSON.parse(jss); 

var infowindow; 
infowindow = new google.maps.InfoWindow({ 
    content: js.length + ' ' + iter//String(jss.length) 
}); 
var iter = 0; 

for (var key in js){ 

    mark = new google.maps.Marker({ 
    position: new google.maps.LatLng(key*0.5,key*0.5), 
    map: map, 
    title: 'Uluru (Ayers Rock)' 
    }); 

    google.maps.event.addListener(mark, 'click', function(){ 
    infowindow.setContent(key.toString()); 
    infowindow.open(map,this); 
    }); 
} 
+0

http://stackoverflow.com/questions/3216351/google-maps-api-v3-for-loop-trouble 解決 – jop

回答

0

您需要存儲密鑰的副本在每次執行一次循環傳遞到你的onclick功能,是這樣的:

s = JSON.parse(jss); 

var infowindow; 
infowindow = new google.maps.InfoWindow({ 
    content: js.length + ' ' + iter//String(jss.length) 
}); 
var iter = 0; 

for (var key in js){ 

    var mark = new google.maps.Marker({ 
     position: new google.maps.LatLng(key*0.5,key*0.5), 
     map: map, 
     title: 'Uluru (Ayers Rock)' 
    }); 
    var keystring=key.toString(); 
    google.maps.event.addListener(mark, 'click', function(){ 
     infowindow.setContent(keystring); 
     infowindow.open(map,this); 
    }); 
} 
0

而不是在嘗試與循環做,

for (var i=0; i<js.length; i++) { 
    mark = new google.maps.Marker({ 
    position: new google.maps.LatLng(js[i]*0.5,js[i]*0.5), 
    map: map, 
    title: 'Uluru (Ayers Rock)' 

}