繁体   English   中英

Google Maps Marker在信息窗口上迭代

[英]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.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM