For loop through Array仅显示最后一个值Google Map

时间:2016-06-26 11:05:11

标签: javascript google-maps

我正在尝试在Google地图上放置3个标记。

在JavaScript中我编写了如下循环

var places = ["Bondi Beach", "Coogee Beach", "Cronulla Beach"];
var lat = [-33.890542, -33.923036, -34.028249];
var lng = [151.274856, 151.259052, 151.157507];

var z=0;

for (tot=lat.length; z < tot; z++) {
  var locations = [
      [places[z], lat[z], lng[z]]
    ];
}

然后我初始化了我的地图

var map;
var markers = [];

function init(){
  map = new google.maps.Map(document.getElementById('map_canvas'), {
    zoom: 10,
    center: new google.maps.LatLng(-33.92, 151.25),
    mapTypeId: google.maps.MapTypeId.ROADMAP
  });

  var num_markers = locations.length;
  for (var i = 0; i < num_markers; i++) {  
    markers[i] = new google.maps.Marker({
      position: {lat:locations[i][1], lng:locations[i][2]},
      map: map,
      html: locations[i][0],
      id: i,
    });

    google.maps.event.addListener(markers[i], 'click', function(){
      var infowindow = new google.maps.InfoWindow({
        id: this.id,
        content:this.html,
        position:this.getPosition()
      });
      google.maps.event.addListenerOnce(infowindow, 'closeclick', function(){
        markers[this.id].setVisible(true);
      });
      this.setVisible(false);
      infowindow.open(map);
    });
  }
}

init();

但是这个输出只有一个标记(最后一个),我想知道我的循环有什么问题?

1 个答案:

答案 0 :(得分:2)

var locations = []
for (tot=lat.length; z < tot; z++) {
   locations.push([places[z], lat[z], lng[z]]);
}

在这里,您每次迭代都会覆盖位置数组。 将新元素推入数组中。

df_jit <- df + matrix(rnorm(nrow(df) * ncol(df), sd = 0.1), ncol = ncol(df))