marker.setMap(NULL);不起作用

时间:2016-03-09 12:45:24

标签: javascript google-maps google-maps-api-3

我想从谷歌地图中删除所有旧标记并添加新标记,但setMap(null)不起作用,它添加新标记而不删除旧标记。请查看我的代码

                var markers = data['map'];
                if (marker != null) {
                    marker.setMap(null);
                }
                marker.setMap(null);
                for (var i = 0; i < markers.length; i++) {
                    alert(1);
                    var data = markers[i];
                    var infoWindow = new google.maps.InfoWindow();
                    var img1 = data.imageUrl != '' ? '<img src= <?php echo $baseUrl; ?>/uploads/property/thumb/' + data.imageUrl + '>' : "";

                    var bed1 = data.beds != '' ? data.beds + ' beds' : "";
                    var bath1 = data.bath != '' ? data.bath + ' bath' : "";
                    var squarefeet1 = data.areaSqaureFeet != '' ? data.areaSqaureFeet + ' squarefeet' : "";
                    var contentString = '<div id="content">';
                    contentString += img1+ '<p>' + data.propertyAddress + ' </p><p> ' + bed1 + '   </p><p>' + bath1 + ' </p><p>' + squarefeet1 + '  </p>';
                    contentString += '</div>';

                    var myLatlng = new google.maps.LatLng(data.lat, data.lng);
                    marker = new google.maps.Marker({
                        position: myLatlng,
                        map: map,
                        title: contentString
                    });

                    google.maps.event.addListener(marker, 'click', function() {
                        infowindow.setContent(this.title);
                        infowindow.open(map, this);
                    }); 
                } 
            }

1 个答案:

答案 0 :(得分:1)

我看不到你在哪里定义了“标记”变量。 但是,一般来说,你应该创建一个标记 - &gt;将它推入一个全局定义的数组(或只是一个你可以访问的数组),所以你有一个引用它。然后,您可以只运行标记数组并将其设置为null。所以你可以这样做:

var markers = []; //Global Marker array to keep references
 var marker = new google.maps.Marker({
        position: {lat: lat, lng: lng},
        icon: icon,
        map: map
    });
    markers.push(marker);

这将使您的标记可以访问。如果要将它们设置为null 你可以写一个像这样的函数:

removeMarker: function () {
    for (var i = 0; i < markers.length; i++) {
        markers[i].setMap(null);
    }
    markers = [];
},

希望有所帮助。