google map javascript在for循环中读取json

时间:2013-12-18 03:55:17

标签: javascript json google-maps for-loop

您好我是javascript的新手。访问json对象的最佳方法是什么,在这种情况下,“js”,以便我可以使每个标记具有不同的内容?现在每个标记显示相同的键值(最后一个键值)

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);
  });
}

2 个答案:

答案 0 :(得分: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);
  });
}

答案 1 :(得分:0)

而不是in,尝试使用for循环,

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)'

}