7

Google マップ ページに 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 = "";

}

コード ( load() ):

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 配列は LatLong の配列ですか? それとも google.maps.Marker 型の配列ですか? 前者の場合、Google マップ マーカーではないため、マップ機能を使用できません。

オプションとして、このようにマップ上に配置するマーカーの配列を作成することもできます。

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 に答える