Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/javascript/472.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Javascript marker.setVisible(false)和marker.setMap(null)不适用于所有标记_Javascript_Asp.net Mvc_Google Maps_Marker - Fatal编程技术网

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

Javascript marker.setVisible(false)和marker.setMap(null)不适用于所有标记,javascript,asp.net-mvc,google-maps,marker,Javascript,Asp.net Mvc,Google Maps,Marker,我正在试图改变标记,同时改变谷歌地图的缩放级别。 加载页面时,Google maps上会创建6个标记(用于区域),并将其推送到一个数组中,如果用户放大,这6个标记将被删除并替换为另一个标记(用于城市)。标记的数量会有所不同,不是固定的。用户缩小后,将删除新标记,并再次创建旧的6个标记。 所有这些都适用于我,除了用户仅缩小6个标记(用于城市)时被删除。 以下是我的代码示例:` var markers=[]; addRegionsMarkers(); google.ma

我正在试图改变标记,同时改变谷歌地图的缩放级别。 加载页面时,Google maps上会创建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);
            }())
        }
    }` 
var标记=[];
addRegionsMarkers();
google.maps.event.addListener(映射'zoom_changed',函数(){
if(map.getZoom()==11)
{
对于(变量i=0;i<6;i++)
{ 
标记[i].setVisible(假);
}
标记=[];
对于(变量i=0;i
我尝试了setVisible()和setMap(null)我得到了相同的结果只有6个标记被删除,我通过在for循环中添加一个警报来检查它是否正常工作,它确实如此。我尝试了我能想到的每一件事,直到我不知道,希望有人能向我解释为什么会发生这种情况。

我解决了它:D。。。。 我在if语句中添加了一个条件:

if(map.getZoom()==11&&markers.length==6)
{
.......
} 
.....
如果(map.getZoom()==8&&markers.length==citylstmap.length){..}
现在它工作得很好