For循环通过数组只显示最后的值,谷歌地图
For loop through Array only shows last value, Google Map
我想在谷歌地图上放置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]]
];
}
然后初始化map
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();
然而,这个输出只有一个标记(最后一个),我想知道我的循环出了什么问题?
for (tot=lat.length; z < tot; z++) {
var locations = [
[places[z], lat[z], lng[z]]
];
}
在这里,每次迭代都覆盖位置数组。将新元素推入数组
var locations = []
for (tot=lat.length; z < tot; z++) {
locations.push([places[z], lat[z], lng[z]]);
}
相关文章:
- 不显示带有本地json文件数据的谷歌地图脚本
- 创建带有侧边栏的谷歌地图
- 删除特定的谷歌地图标记
- Node.js中的谷歌地图几何库
- 无法在有角度的谷歌地图中动态传递地图样式
- 打开带有多个标记的谷歌地图链接
- 带有自定义标记的谷歌地图方向APIv3
- 为位于路线上的谷歌地图标记(起点和终点)设置一个信息窗口
- 显示以坐标为变量的谷歌地图
- java脚本中的谷歌地图在第二次点击时不起作用
- 棱角分明的谷歌地图没有更新标记
- 从外部js文件编辑现有的谷歌地图
- 更新打开的谷歌地图信息窗口
- 棱角分明的谷歌地图双窗口
- 加载自定义磁贴后的谷歌地图事件
- 如何正确地包含带有参数的谷歌地图API
- 如何将可拖动的谷歌地图标记的地址传递到输入字段中
- 如何重新启用禁用的谷歌地图v3拖放、缩放等
- 为什么我的谷歌地图API不会渲染
- 显示循环最后值的谷歌地图信息窗口