【问题标题】:Google Maps setMap is not a function谷歌地图 setMap 不是一个函数
【发布时间】:2012-11-08 10:12:57
【问题描述】:

我正在处理我的谷歌地图页面在 Firebug 中显示错误的问题。 当我在经销商地图中搜索时,将触发 clearLocations() 函数。 但是出现了这个错误:“ma​​rkers[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);

}

【问题讨论】:

    标签: google-maps


    【解决方案1】:

    那么,如果我理解正确的话,Markers 数组是一个 LatLongs 数组?或者它是 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)
    

    【讨论】:

    • 这让我明白了,谢谢!问题是我的标记数组是纬度/经度的对象,而不是标记本身。
    • 这已经很老了,你用的是什么版本的地图 API?
    【解决方案2】:

    你可以试试这个 - 只是

       console.log('=>'+markers.length);
        for (var i = 0; i < markers.length; i++) {
          console.log('===>'+markers[i]);
          markers[i] = null;
        }
       markers = [];
       console.log('==>'+markers.length);
    

    【讨论】:

      猜你喜欢
      • 2011-07-26
      • 1970-01-01
      • 1970-01-01
      • 2014-11-23
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2012-12-15
      相关资源
      最近更新 更多