[英]Google Maps Marker iterating over infowindow
好的,因此,使用下面的代码我无法弄清楚为什么在生成地图和标记时只能单击并查看生成的最后一个标记? 有什么想法可以实现吗? 谢谢
<script>
function initMap() {
var uluru = {lat: -25.363, lng: 131.044};
var map = new google.maps.Map(document.getElementById('map'), {
zoom: 5,
center: uluru
});
{% for i in locations %}
{
var stuff = "{{ i.Name }}"
var marker = new google.maps.Marker({
position: { {{ i.Loc }} },
clickable: true,
label: "{{ i.Name }}",
animation: google.maps.Animation.DROP,
map: map
});
}
{% endfor %}
var infowindow = new google.maps.InfoWindow({
content: stuff
});
marker.addListener('click', function() {
infowindow.open(map, marker);
});
}
</script>
因此,您要查找的代码是marker.setMap(null)
。
要实现这一点,您需要在页面加载时创建一个全局markers
数组。
window.markers = []
然后(在init函数内部)将标记放入该数组中,以便稍后引用。
var marker = new google.maps.Marker({
...your code...
});
markers.push(marker);
然后,在您的click
监听器中,您需要对其进行循环,并告诉Google Maps删除每一个:
for (var i = 0, marker; (marker = markers[i]); i++) marker.setMap(null);
然后,您当然要在click
侦听器内部创建一个new google.maps.Marker
。
如果将代码放入CodePen中,我可以帮助您实现这一点。
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.