marker.setVisible(false) 和 marker.setMap(null) 不适用于所有标记

marker.setVisible(false) and marker.setMap(null) not working on all markes

本文关键字:marker 适用于 setMap setVisible false null 不适用      更新时间:2023-09-26

我正在尝试更改标记,同时更改Google地图中的缩放级别。当页面加载时,将在Google地图上创建6个标记(用于区域)并推送到一个数组中,如果用户放大,则6个标记将被删除并替换为另一个标记(对于城市)标记的数量各不相同,它不是固定的。当用户缩小时,将删除新标记,并再次创建旧的 6 个标记。所有这些都对我有用,除非用户缩小时只删除了 6 个标记(对于城市)。这是我的代码示例:'

      var markers=[];
    addRegionsMarkers();
    google.maps.event.addListener(map, 'zoom_changed', function () {
        if (map.getZoom() == 11)
        {
            for (var i = 0; i < 6; i++)
           { 
                markers[i].setVisible(false);
            }
            markers=[];
            for (var i = 0; i < cityListMap.length; i++) {
                (function ()
                {                        
                    var k = i;
                    var marker = new MarkerWithLabel({
                        position: new google.maps.LatLng(cityListMap[i].latitude, cityListMap[i].longitude),
                        map: map,
                        labelContent: cityListMap[i].average.toFixed(1) + suffix,
                        labelAnchor: new google.maps.Point(20, 20),
                        labelClass: "labels",// the CSS class for the label
                    });
                    marker.setIcon('.');
                    marker.setTitle(cityListMap[i].city);
                    markers.push(marker);
                }())
            }
        }
        else
        {
            if (map.getZoom() == 8) {
                for (var j = 0; j < cityListMap.length ; j++)
                {
                    markers[j].setVisible(false);
                   // alert(markers[j].getTitle() + " id " + j);
                }
                markers =[];
                addRegionsMarkers();
            }
        }
    });
    function addRegionsMarkers()
    {
        for (var i = 0; i < 6; i++) {
            (function () {
                var k = i;
                var  marker = new MarkerWithLabel({
                    position: locationsLatlng[i],
                    map: map,
                    labelContent: averagesArray[i] + suffix,
                    labelAnchor: new google.maps.Point(20, 20),
                    labelClass: "labels",// the CSS class for the label
                });
                marker.setIcon('.');
                marker.setTitle(region[i]);
                markers.push(marker);
            }())
        }
    }` 

我尝试了 setVisible() 和 setMap(null) 我得到了相同的结果,只删除了 6 个标记,我通过在 for 循环中添加警报来检查 for 循环是否正常工作,它确实如此。我尝试了我能想到的所有事情,直到我不知道,希望有人能向我解释为什么会这样。

我:D解决了它....我在 if 语句中添加了一个条件: if (map.getZoom() == 11 && markers.length==6) { ....... } ..... if (map.getZoom() == 8 && markers.length==cityListMap.length) {....} 现在它工作得很好