2013-12-18 25 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)' 

}