清除谷歌地图上的标记



我用两组标记制作了一个自定义的谷歌地图。我正在尝试编写一个函数来清除标记,但无法使其工作。

该函数:

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

当标记采用经度长格式时,这有效,如下所示:

var locs1 = [
{lat: 51.2, lng: 0},
{lat: 52, lng: 0.3}
]

但是当我使用数组来定义标记时(如下所示),它不再起作用:

var locs1 = [
['Name', 51.2, 0, 'Info'],
['Name', 52, 0.3, 'Info']
];

如何使清除标记功能正常工作?

完整的代码可以在此小提琴中找到,以帮助理解上下文。

变量标记应该是全局的,而不是在函数中声明的。

我编辑了你的小提琴。

var markers = [];
var locs1 = [
['Name', 51.2, 0, 'Info'],
['Name', 52, 0.3, 'Info']
];
var locs2 = [
['Name', 53, -1.93, ' Info'], ['Name', 51, -1.8979, 'Info']
];

我以前遇到过这个问题。您需要保留标记的列表或数组,然后遍历它们以清除它们。简单地将一组 cordinate 设置为 null 不一定会清除已经存在的标记,因为它是一个不同的对象。

谷歌地图API - 删除标记

最新更新