好的,所以使用下面的代码我无法弄清楚为什么在生成地图和标记时我只能点击并查看生成的最后一个标记?关于实施这个的任何想法?谢谢
<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>
答案 0 :(得分:0)
因此,您正在寻找的代码是marker.setMap(null)
。
要实现此功能,您需要在页面加载时创建全局markers
数组。
window.markers = []
然后(在init函数内)将标记推入该数组,以便稍后引用它。
var marker = new google.maps.Marker({
...your code...
});
markers.push(marker);
然后在您的click
听众中,您想要循环播放并告诉Google地图删除每个人:
for (var i = 0, marker; (marker = markers[i]); i++) marker.setMap(null);
然后当然,您想要在new google.maps.Marker
听众中制作click
。
如果您将代码放入CodePen,我可以帮助您实现此目的。