7

我正在处理我的谷歌地图页面在 Firebug 中显示错误的问题。当我在经销商地图中搜索时,将触发 clearLocations() 函数。但是这个错误出现了:“ markers[i].setMap is not a function

有谁知道如何解决这个问题?我在几个论坛和群组中进行了搜索,但我使用的是 google.maps.Marker 数组,所以我找不到我的问题。

提前致谢!

代码(clearLocations()):

function clearLocations() {
infoWindow.close();
for (var i = 0; i < markers.length; i++) {
    markers[i].setMap(null);
}
markers.length = 0;
dealers.innerHTML = "";

}

代码(负载()):

function load() {



map = new google.maps.Map(document.getElementById("map_canvas"), {
    //center: new google.maps.LatLng(51.30174, 10.60824),
    zoom: 10,
    mapTypeId: 'roadmap',
    mapTypeControlOptions: {style: google.maps.MapTypeControlStyle.DROPDOWN_MENU}
});
infoWindow = new google.maps.InfoWindow();
dealers = document.getElementById("dealers");

infoWindow = new google.maps.InfoWindow();
var bounds = new google.maps.LatLngBounds();

for (i = 0; i < markers.length; i++) {  
    marker = new google.maps.Marker({
        position: new google.maps.LatLng(markers[i][1], markers[i][2]),
        map: map
    });

    var pos = new google.maps.LatLng(markers[i][1], markers[i][2]);
    bounds.extend(pos);

    google.maps.event.addListener(marker, 'click', (function(marker, i) {
    return function() {
        infowindow.setContent(markers[i][0]);
        infowindow.open(map, marker);
    }
})(marker, i));
}
map.fitBounds(bounds);

}

4

2 回答 2

14

那么,如果我理解正确的话,Markers 数组是一个 LatLongs 数组吗?或者它是 google.maps.Marker 类型的数组?如果是前者,那么它将没有任何可用的地图功能,因为它不是谷歌地图标记。

一个选项可能是制作一个您放置在地图上的标记数组,如下所示。

var marker = new google.maps.Marker({
          position: new google.maps.LatLng(markers[i][1], markers[i][2]),
          map: map
         });
mapMarkers[i] = marker;

然后打电话

mapMarkers[i].setMap(null)
于 2012-11-08T10:24:43.953 回答
0

你可以试试这个 - 只是

   console.log('=>'+markers.length);
    for (var i = 0; i < markers.length; i++) {
      console.log('===>'+markers[i]);
      markers[i] = null;
    }
   markers = [];
   console.log('==>'+markers.length);
于 2017-06-15T00:20:07.280 回答