Google Maps Marker迭代infowindow

时间:2017-05-05 17:42:28

标签: javascript python html

好的,所以使用下面的代码我无法弄清楚为什么在生成地图和标记时我只能点击并查看生成的最后一个标记?关于实施这个的任何想法?谢谢

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

1 个答案:

答案 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,我可以帮助您实现此目的。